Korzystanie z programu Git (index)


Korzystanie z programu Git (4) - repozytoria w sieci

WPROWADZENIE

Repozytoria lokalne służą do zwykłej pracy z plikami, wykonywania rewizji, itp.

Repozytoria zdalne służą do synchronizacji rewizji i zwykle są repozytoriami surowymi (ang. bare).

Kilka serwisów internetowych udostępnia możliwość tworzenia zdalnych repozytoriów prywatnych i publicznych. Zwykle są pewne limity na liczbę prywatnych repozytorów lub na liczbę współpracowników.


# git remote add [shortname] [url]      # dodanie nowego remote
# git remote                            # lista shortnames
# git remote -v                         # sprawdzenie URL (push i fetch)
# git remote show origin                # jest pytanie o hasło
# git remote rename [old_name] [new_name]    # zmiana nazwy remote
# git remote rm [remote_name]           # usunięcie remote

# git fetch [remote_name] [branch_name]
# git fetch origin master               # typowe

Teraz lokalnie mamy dostęp do gałęzi origin/master.
Nie ma automatycznego łączenia z lokalną gałęzią master.
Klonowanie automatycznie ustawia nazwę "origin" dla remote.

# git pull [remote_name] [branch_name]
# git pull origin master                # typowe
# git pull                              # zwykle to wystarczy

Automatycznie zachodzi "git fetch" i "git merge".

# git push [remote_name] [branch_name]  # push to upstream
# git push origin master                # typowe
# git push                              # zwykle to wystarczy

KLONOWANIE PROJEKTU Z SIECI

Klonowanie projektu istniejącego w sieci w trybie tylko do odczytu (nie mamy uprawnień do wprowadzania zmian w projekcie).


# Pobieramy kod modułu Pythona o nazwie SymPy.

$ mkdir sympy       # tworzę katalog na repo

$ cd sympy          # przejście do katalogu projektu

$ git clone https://github.com/sympy/sympy.git

# git clone [url]
# git clone [url] [new_dir_name]
# Właściwe klonowanie zdalnego repo.
# sympy - nazwa konta właściciela projektu.
# sympy.git - repo surowe (końcówka .git) dla projektu sympy.
# Zdalne repo otrzymuje automatycznie nazwę "origin".

SERWIS github.com

Zakładanie w serwisie projektu, który będzie zsynchronizowany z lokalnym repo. Zaczynamy od założenia projektu w sieci. Konto (łącznie wszystkie repo) ma 1 GB dostępnej powierzchni dyskowej.


Nazwa konta właściciela: ufkapano
Nazwa projektu: myproject
Typ repo: publiczne  (bezpłatne w serwisie)
Pełny identyfikator projektu: ufkapano/myproject
Adres repo w sieci: https://github.com/ufkapano/myproject.git

Polecenia na lokalnym komputerze.


$ mkdir myproject   # tworzę katalog na repo

$ cd myproject

$ touch README.md   # README z opisem projektu (z Markdown)

$ git init

$ git add -A

$ git commit -m "First commit."         # pierwsza rewizja
[master abcdefg] First commit.          # 7 znaków SHA-1

$ git remote add origin https://ufkapano@github.com/ufkapano/myproject.git

# origin - alias repo zdalnego,
# ufkapano@ - opcjonalna nazwa właściciela (inaczej zapyta),
# myproject.git - zdalne repo jest surowe.

$ git push -u origin master             # lub --set-upstream

# Jednorazowe polecenie, potem wystarczy tylko "git push".
# Opcja -u powoduje śledzenie gałęzi origin/master
# przez lokalną gałąź master.
# master to nazwa gałęzi lokalnej.

$ git remote                            # list shortnames of remotes
origin

# Pytanie o URL zdalnego repo.

$ git remote -v                         # sprawdzamy URLs
origin  https://ufkapano@github.com/ufkapano/myproject.git (fetch)
origin  https://ufkapano@github.com/ufkapano/myproject.git (push)

SERWIS bitbucket.org

Procedura jest właściwie analogiczna, wystarczy zamienić github.com na bitbucket.org. Chyba komunikaty Gita są troszkę inne. Można bezpłatnie zakładać repozytoria publiczne i prywatne. Zaczynamy od założenia projektu w sieci. Repository size: soft limit 1 GB, hard limit 2 GB.


Create a new repository
Name: myproject
Description: My project.
Access level:
[*] This is a private repository
Forking: Allow only private forks
Repository type:
(*) Git
( ) Merkurial
Project management:
[ ] Issue tracking
[ ] Wiki
Language: Python

Przycisk: Create repository

Command line
> I'm starting from scratch
> I have an existing project

Polecenia na lokalnym komputerze.


$ mkdir myproject             # tworzę katalog na repo

$ cd myproject

$ touch README.md             # README z opisem projektu (z Markdown)

$ git init

$ git add -A

$ git commit -m "First commit."         # pierwsza rewizja
[master abcdefg] First commit.          # 7 znaków SHA-1

$ git remote add origin https://ufkapano@bitbucket.org/ufkapano/myproject.git

$ git push -u origin master             # lub --set-upstream

$ git remote
origin

$ git remote -v                         # sprawdzamy URLs
origin  https://ufkapano@bitbucket.org/ufkapano/myproject.git (fetch)
origin  https://ufkapano@bitbucket.org/ufkapano/myproject.git (push)

# Jak zmienić nazwę repo w Bitbucket?
1. Go to the repo's overview page, usually 
https://bitbucket.org/username/oldname/overview
2. Click the settings cog on the far right end of the menu row !
Teraz jest ikona z lewej na dole.
3. Change the name in the Name field.
4. Click Save repository details.

# Zmiany lokalne.
1. Polecenie 
git remote -v 
pokazuje starą lokalizację
2. Zmiana lokalizacji na nową:
git remote set-url origin new_url

SERWIS gitlab.com

Nielimitowana liczba prywatnych repozytoriów. Często występują długie czasy oczekiwania na dostęp do repo. GitLab wyróżnia users, groups i projects. Właścicielem projektu może być user lub group. Różne role dla users i groups (Owner, Reporter).


Utworzenie nowego projektu.
Na stronie dashboard mamy: 
Your Projects, Starred Projects, Explore Projects.
Przycisk: +NEW PROJECT

SCHEMAT PRACY ZE ZDALNYM REPO


$ git pull          # pobranie ewentualnych nowych rewizji z origin

# Robimy zmiany w plikach.

$ git add -A

$ git commit -m "Komentarz."

$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)

$ git push          # przesłanie nowej rewizji do origin

ZADANIE 4.1


Korzystanie z programu Git (index)