Darmowy fragment publikacji:
Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej
publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną,
fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym
powoduje naruszenie praw autorskich niniejszej publikacji.
Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi
ich właścicieli.
Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte
w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności
ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub
autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności
za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce.
Redaktor prowadzący: Ewelina Burska
Projekt okładki: Jan Paluch
Materiały graficzne na okładce zostały wykorzystane za zgodą Shutterstock.
Wydawnictwo HELION
ul. Kościuszki 1c, 44-100 GLIWICE
tel. 32 231 22 19, 32 230 98 63
e-mail: helion@helion.pl
WWW: http://helion.pl (księgarnia internetowa, katalog książek)
Drogi Czytelniku!
Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres
http://helion.pl/user/opinie?gitroz
Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
ISBN: 978-83-246-5564-9
Copyright © Helion 2013
Printed in Poland.
• Kup książkę
• Poleć książkę
• Oceń książkę
• Księgarnia internetowa
• Lubię to! » Nasza społeczność
Spis treĈci
Podziökowania ................................................................................. 9
CzöĈè I Repozytoria o liniowej historii ....................................... 11
Rozdziaä 1. Wprowadzenie ................................................................................ 13
Git ................................................................................................................................... 13
Jak przebiega praca nad projektem stosującym Git? ...................................................... 14
Hosting projektów Git .................................................................................................... 19
Czego siĊ nauczysz z tego podrĊcznika? ........................................................................ 20
Dokumentacja ................................................................................................................. 20
Rozdziaä 2. Instalacja programu Git .................................................................. 23
Konsola Gita w systemie Windows ................................................................................ 25
Uáatwienia uruchamiania konsoli w systemie Windows ................................................. 26
Podstawowa konfiguracja klienta Git ............................................................................. 27
Edytor ............................................................................................................................. 28
Rozdziaä 3. Tworzenie repozytoriów .................................................................. 29
Inicjalizacja nowego repozytorium ................................................................................. 29
Klonowanie repozytoriów .............................................................................................. 30
Badanie historii projektu ................................................................................................ 33
Wizualizacja historii projektu ......................................................................................... 36
Rozdziaä 4. Obszar roboczy ............................................................................... 39
Przywracanie stanu projektu, który zawiera nowe pliki ................................................. 41
Rozdziaä 5. Tworzenie rewizji i przywracanie stanu plików ................................. 43
Tworzenie rewizji ........................................................................................................... 43
Przywracanie stanu plików do wybranej rewizji ............................................................ 45
Przenoszenie repozytorium ............................................................................................. 48
Rezygnacja z repozytorium ............................................................................................ 49
Rozdziaä 6. Stany plików .................................................................................. 51
Uproszczony model pracy: przestrzeĔ robocza i repozytorium ...................................... 51
Indeksowanie .................................................................................................................. 52
Diagram stanów .............................................................................................................. 53
4
Git. Rozproszony system kontroli wersji
Obszar roboczy, indeks i repozytorium .......................................................................... 56
Modyfikowanie stanu plików repozytorium ................................................................... 57
Stan repozytorium .......................................................................................................... 61
Uproszczony model pracy raz jeszcze ............................................................................ 62
Oznaczenia stanów pliku ................................................................................................ 68
Stany dwuliterowe (mieszane) ........................................................................................ 69
Repozytoria zwykáe i surowe .......................................................................................... 72
Skáadnia poleceĔ Gita ..................................................................................................... 73
Rozdziaä 7. Ignorowanie plików ........................................................................ 75
Uzupeánienie diagramu stanów ....................................................................................... 78
Rozdziaä 8. Znaczniki ....................................................................................... 83
Znaczniki lekkie i oznaczone .......................................................................................... 83
Tworzenie znaczników opisanych .................................................................................. 84
Tworzenie znaczników lekkich ...................................................................................... 84
Usuwanie znaczników .................................................................................................... 85
Sprawdzanie dostĊpnych znaczników ............................................................................. 85
Szczegóáowe dane znacznika .......................................................................................... 85
UĪycie znaczników ......................................................................................................... 86
Generowanie skompresowanych plików odpowiadających konkretnej
wersji projektu ............................................................................................................. 89
Rozdziaä 9. Identyfikowanie rewizji ................................................................... 91
Peáne skróty SHA-1 ........................................................................................................ 91
Skrócona postaü SHA-1 .................................................................................................. 92
Znaczniki ........................................................................................................................ 92
Nazwa symboliczna HEAD ............................................................................................ 93
Rewizja domyĞlna .......................................................................................................... 93
Repozytoria o historii nieliniowej ................................................................................... 94
Dziennik reflog ............................................................................................................. 100
Polecenia rev-parse oraz rev-list ................................................................................... 101
Znaki specjalne wiersza poleceĔ Windows .................................................................. 102
Rozdziaä 10. Skróty komend ............................................................................. 107
Komendy uáatwiające zapisywanie stanu projektu ....................................................... 108
Komendy uáatwiające wykonywanie üwiczeĔ .............................................................. 110
Rozdziaä 11. Modyfikowanie historii projektu .................................................... 115
Usuwanie ostatnich rewizji ........................................................................................... 116
Modyfikowanie ostatniej rewizji .................................................................................. 117
àączenie rewizji ............................................................................................................ 117
Usuwanie zmian wprowadzonych przez rewizjĊ .......................................................... 120
Odzyskiwanie poszczególnych plików z dowolnej rewizji ........................................... 125
Rozdziaä 12. Podsumowanie czöĈci I ................................................................ 127
Co powinieneĞ umieü po lekturze pierwszej czĊĞci? .................................................... 130
Lista poznanych poleceĔ .............................................................................................. 130
Spis treĈci
5
CzöĈè II Repozytoria z rozgaäözieniami ..................................... 139
Rozdziaä 13. Tworzenie i usuwanie gaäözi .......................................................... 141
GaáĊzie to wskaĨniki rewizji! ....................................................................................... 141
GaáąĨ master ................................................................................................................. 141
Tworzenie gaáĊzi .......................................................................................................... 143
Dodawanie rewizji w bieĪącej gaáĊzi ............................................................................ 143
Tworzenie gaáĊzi wskazujących dowolną rewizjĊ ........................................................ 144
Przeáączanie gaáĊzi ....................................................................................................... 145
Tworzenie i przeáączanie gaáĊzi .................................................................................... 147
Stan detached HEAD .................................................................................................... 148
Relacja zawierania gaáĊzi ............................................................................................. 150
Usuwanie gaáĊzi ............................................................................................................ 153
Zmiana nazwy gaáĊzi .................................................................................................... 155
GaáĊzie jako identyfikatory rewizji ............................................................................... 156
Uwagi o usuwaniu ostatnich rewizji ............................................................................. 157
Sprawdzanie róĪnic pomiĊdzy gaáĊziami ...................................................................... 157
GaáĊzie i dziennik reflog ............................................................................................... 161
Zgubione rewizje .......................................................................................................... 163
Rozdziaä 14. ãñczenie gaäözi: operacja merge ................................................... 167
Przewijanie do przodu .................................................................................................. 168
Przewijanie do przodu dla wielu gaáĊzi ........................................................................ 169
àączenie gaáĊzi rozáącznych ......................................................................................... 170
àączenie kilku rozáącznych gaáĊzi ................................................................................ 171
Wycofywanie operacji git merge .................................................................................. 173
Rozdziaä 15. ãñczenie gaäözi: operacja rebase ................................................... 175
PodobieĔstwa i róĪnice pomiĊdzy poleceniami merge i rebase .................................... 176
Wycofywanie operacji git rebase .................................................................................. 178
Rozdziaä 16. Podsumowanie czöĈci II ............................................................... 181
Co powinieneĞ umieü po lekturze drugiej czĊĞci? ........................................................ 181
Lista poznanych poleceĔ .............................................................................................. 182
CzöĈè III Gaäözie zdalne ............................................................ 185
Rozdziaä 17. Definiowanie powiñzania miödzy repozytorium lokalnym a zdalnym .... 187
Klonowanie raz jeszcze ................................................................................................ 187
Klonowanie repozytorium z dysku ............................................................................... 191
Definiowanie repozytoriów zdalnych ........................................................................... 192
Definiowanie powiązania miĊdzy gaáĊzią lokalną a gaáĊzią Ğledzoną .......................... 193
Listowanie gaáĊzi .......................................................................................................... 194
Rozdziaä 18. Podstawy synchronizacji repozytoriów ........................................... 195
Pobieranie gaáĊzi z repozytorium zdalnego do repozytorium lokalnego ...................... 195
Uaktualnianie sklonowanych repozytoriów .................................................................. 197
Repozytoria surowe ...................................................................................................... 198
Przesyáanie gaáĊzi do repozytorium zdalnego ............................................................... 199
6
Git. Rozproszony system kontroli wersji
Wysyáanie dowolnej gaáĊzi ........................................................................................... 206
Przeáączanie na gaáąĨ zdalną ........................................................................................ 208
Przesyáanie gaáĊzi ze zmianą nazwy ............................................................................. 208
Usuwanie gaáĊzi zdalnych ............................................................................................ 209
Zabezpieczanie przed utratą rewizji ............................................................................. 209
Polecenie backup .......................................................................................................... 210
Przesyáanie gaáĊzi do repozytorium zwykáego .............................................................. 210
Rozdziaä 19. Praktyczne wykorzystanie Gita — scenariusz pierwszy .................. 215
Inicjalizacja projektu .................................................................................................... 216
Doáączanie do projektu ................................................................................................. 216
Wprowadzanie zmian w projekcie ................................................................................ 217
Wykorzystywanie kilku gaáĊzi ..................................................................................... 218
Rozdziaä 20. ãñczenie oddzielnych repozytoriów ................................................ 219
Graf niespójny .............................................................................................................. 223
Rozdziaä 21. Podsumowanie czöĈci III .............................................................. 225
Co powinieneĞ umieü po lekturze trzeciej czĊĞci? ........................................................ 226
Lista poznanych poleceĔ .............................................................................................. 226
CzöĈè IV TreĈè pliku ................................................................. 231
Rozdziaä 22. Konflikty ...................................................................................... 233
Konflikt tekstowy: wynik operacji git merge ............................................................... 233
Konflikt tekstowy: wynik operacji git rebase ............................................................... 236
Dublowanie konfliktów przez operacje merge i rebase ................................................ 238
Konflikty binarne .......................................................................................................... 238
Konflikt binarny: wynik operacji git merge .................................................................. 239
Konflikt binarny: wynik operacji git rebase ................................................................. 240
Przywracanie plików do postaci z áączonych gaáĊzi ..................................................... 242
Polecenia checkout i show ............................................................................................ 242
Rozdziaä 23. Badanie róĔnic ............................................................................. 245
Szukanie zmienionych wyrazów .................................................................................. 253
Szukanie zmienionych plików ...................................................................................... 254
Wyszukiwanie rewizji, w których podany plik zostaá zmieniony ................................. 255
Rozdziaä 24. Pliki tekstowe i binarne ................................................................ 257
OdróĪnianie plików binarnych od tekstowych .............................................................. 257
Atrybut diff — konflikty tekstowe i binarne ................................................................ 258
Konwersja znaków koĔca wiersza ................................................................................ 259
Projekty wieloplatformowe .......................................................................................... 260
Ustalenie konwersji znaków koĔca wiersza dla konkretnych plików ........................... 261
Rozdziaä 25. Podsumowanie czöĈci IV .............................................................. 263
Co powinieneĞ umieü po lekturze czwartej czĊĞci? ...................................................... 263
Lista poznanych poleceĔ .............................................................................................. 264
Spis treĈci
7
CzöĈè V Praca w sieci ............................................................. 267
Rozdziaä 26. Serwisy github.com i bitbucket.org ............................................... 269
Rozdziaä 27. Klucze SSH .................................................................................. 277
Instalacja oprogramowania SSH w systemie Windows ................................................ 277
Konfiguracja klucza SSH na serwerze github.com ....................................................... 279
Konfiguracja klucza SSH na serwerze bitbucket.org .................................................... 280
Repozytorium zdalne na serwerze SSH ........................................................................ 280
Rozdziaä 28. Tworzenie i usuwanie repozytoriów w serwisach
github.com i bitbucket.org ........................................................... 283
Inicjalizowanie nowego repozytorium: serwis github.com ........................................... 283
Import istniejącego kodu: serwis github.com ............................................................... 286
Inicjalizowanie nowego repozytorium: serwis bitbucket.org ........................................ 287
Rozdziaä 29. Praktyczne wykorzystanie Gita — scenariusz drugi ........................ 291
Scenariusz pierwszy realizowany w serwisach github.com i bitbucket.org .................. 292
Rozdziaä 30. Praca grupowa w serwisach github.com oraz bitbucket.org ........... 293
Praca oparta na Īądaniach aktualizacji ......................................................................... 294
Praca grupowa wykorzystująca Īądania aktualizacji (bez gaáĊzi) w piguáce ................ 301
ĩądania aktualizacji i gaáĊzie ........................................................................................ 303
Opisy i dyskusje ........................................................................................................... 313
Rozdziaä 31. Zintegrowany system Ĉledzenia bäödów ......................................... 315
Rozdziaä 32. Podsumowanie czöĈci V ............................................................... 319
Repozytoria do üwiczenia znajomoĞci Gita .................................................................. 319
Dodatki ..................................................................................... 321
Dodatek A Literatura ..................................................................................... 321
Dodatek B Säownik terminów angielskich ....................................................... 323
Skorowidz ....................................................................................................... 325
8
Git. Rozproszony system kontroli wersji
Rozdziaä 17. i Definiowanie powiñzania miödzy repozytorium lokalnym a zdalnym
187
Rozdziaä 17.
Definiowanie powiñzania
miödzy repozytorium
lokalnym a zdalnym
PrzejdĨmy do definiowania powiązaĔ pomiĊdzy repozytoriami. Repozytorium, w któ-
rym poleceniami git add oraz git commit bĊdziemy wykonywali rewizje, nazwiemy
repozytorium lokalnym. Repozytoria, które posáuĪą do synchronizacji rewizji, na-
zwiemy repozytoriami zdalnymi.
Repozytoria lokalne bĊdą repozytoriami zwykáymi, a repozytoria zdalne — repozyto-
riami surowymi.
Klonowanie raz jeszcze
Poznana w rozdziale 3. operacja klonowania:
git clone adres [folder]
dotyczy dwóch repozytoriów. Na lokalnym dysku tworzymy repozytorium, które bĊ-
dzie kopią repozytorium zdalnego. Klonowanie jest wiĊc najprostszym przykáadem
tworzenia powiązania pomiĊdzy dwoma repozytoriami.
Po wykonaniu operacji klonowania repozytorium utworzone na dysku nazwiemy re-
pozytorium lokalnym, a repozytorium, którego adres pojawiá siĊ w poleceniu git
clone — repozytorium zdalnym.
188
CzöĈè III i Gaäözie zdalne
Po wykonaniu operacji:
git clone git://github.com/symfony/symfony.git .
repozytorium:
git://github.com/symfony/symfony.git
jest repozytorium zdalnym. Repozytorium utworzone na dysku to repozytorium
lokalne.
Podczas klonowania wykonywane są nastĊpujące czynnoĞci:
1. Proces rozpoczyna siĊ od inicjalizacji nowego pustego repozytorium
lokalnego.
2. W repozytorium lokalnym dodawany jest adres repozytorium zdalnego.
Adres ten jest automatycznie oznaczany nazwą origin.
3. Z repozytorium zdalnego kopiowane są rewizje ze zdalnej gaáĊzi master
do lokalnej gaáĊzi master.
4. W repozytorium lokalnym w folderze .git/refs/remotes/origin tworzony jest
plik HEAD zawierający nazwĊ symboliczną domyĞlnej gaáĊzi repozytorium
zdalnego.
5. NastĊpnie definiowane jest powiązanie lokalnej gaáĊzi master ze zdalną
gaáĊzią master. GaáąĨ lokalna bĊdzie Ğledziáa (ang. track) gaáąĨ zdalną.
6. Na zakoĔczenie stan plików w obszarze roboczym repozytorium lokalnego
jest przywracany do postaci z gaáĊzi master.
Wszystkie powyĪsze operacje moĪemy wykonaü rĊcznie.
Procedura röcznego klonowania
1. Polecenie:
git init
tworzy nowe puste repozytorium git.
2. Polecenie:
git remote add origin adres
dodaje w konfiguracji adres repozytorium zdalnego.
3. Polecenie:
git fetch --no-tags origin master:refs/remotes/origin/master
kopiuje z repozytorium zdalnego do repozytorium lokalnego wszystkie
rewizje zawarte w gaáĊzi master. Ponadto w repozytorium lokalnym w folderze
.git/refs/remotes/origin tworzona jest nazwa symboliczna dla zdalnej gaáĊzi
master. Parametr --no-tags powoduje, Īe znaczniki z repozytorium zdalnego
nie bĊdą kopiowane.
Rozdziaä 17. i Definiowanie powiñzania miödzy repozytorium lokalnym a zdalnym
189
4. Polecenie:
git branch --set-upstream master origin/master
tworzy powiązanie pomiĊdzy lokalną gaáĊzią master a zdalną gaáĊzią master.
5. Na zakoĔczenie polecenie:
git reset --hard HEAD
przywraca stan plików w obszarze roboczym.
Repozytorium wykonane opisanñ powyĔej procedurñ róĔni siö od repozytorium klo-
nowanego tylko tym, Ĕe w repozytorium klonowanym w pliku refs/remotes/origin/
HEAD adres gaäözi zdalnej master jest zapisany w postaci symbolicznej:
ref: refs/remotes/origin/master
çwiczenie 17.1
Sklonuj repozytorium jQuery:
git://github.com/jquery/jquery.git
po czym sprawdĨ konfiguracjĊ repozytorium lokalnego.
Po wykonaniu polecenia:
git clone git://github.com/jquery/jquery.git .
w repozytorium lokalnym w pliku .git/config znajdziemy wpisy ustalające adres origin
oraz powiązanie lokalnej gaáĊzi master ze zdalną gaáĊzią master:
[remote origin ]
fetch = +refs/heads/*:refs/remotes/origin/*
url = git://github.com/jquery/jquery.git
[branch master ]
remote = origin
merge = refs/heads/master
W pliku .git/HEAD znajdziemy odwoáanie symboliczne:
ref: refs/heads/master
W pliku .git/refs/heads/master znajdziemy skrót SHA-1 rewizji, a w pliku .git/refs/
remotes/origin/HEAD — odwoáanie symboliczne:
ref: refs/remotes/origin/master
çwiczenie 17.2
Wykorzystując polecenia:
git init
git remote add origin git://github.com/jquery/jquery.git
git fetch --no-tags origin master:refs/remotes/origin/master
190
CzöĈè III i Gaäözie zdalne
git branch --set-upstream master origin/master
git reset --hard HEAD
sklonuj repozytorium jQuery:
git://github.com/jquery/jquery.git
Przed i po wykonaniu kaĪdego kroku sprawdĨ zawartoĞü nastĊpujących plików i fol-
derów konfiguracyjnych:
.git/config
.git/HEAD
.git/refs/heads/master
.git/refs/remotes/origin
ROZWIðZANIE
Krok 1.
Utwórz nowy folder i wydaj w nim polecenie:
git init
W tym momencie plik .git/config nie zawiera Īadnych informacji o repozytoriach zdal-
nych. W pliku .git/HEAD obecne jest odwoáanie symboliczne:
ref: refs/heads/master
W folderze .git/refs nie wystĊpują plik .git/refs/heads/master i folder .git/refs/remotes.
Krok 2.
Po wydaniu polecenia:
git remote add origin git://github.com/jquery/jquery.git
w pliku .git/config znajdziemy wpis:
[remote origin ]
url = git://github.com/jquery/jquery.git
fetch = +refs/heads/*:refs/remotes/origin/*
który ustala adres repozytorium okreĞlanego nazwą symboliczną origin.
ZawartoĞü folderu .git/refs/ i pliku .git/HEAD nie ulegáa zmianie.
Krok 3.
Wydaj polecenie:
git fetch --no-tags origin master:refs/remotes/origin/master
Spowoduje ono pobranie z repozytorium zdalnego origin wszystkich rewizji zawar-
tych w gaáĊzi master.
Ponadto w folderze .git/refs/remotes/origin/master utworzony zostanie plik zawiera-
jący skrót SHA-1 ostatniej rewizji w gaáĊzi master repozytorium zdalnego origin.
Rozdziaä 17. i Definiowanie powiñzania miödzy repozytorium lokalnym a zdalnym
191
Krok 4.
Wydaj polecenie:
git branch --set-upstream master origin/master
W ten sposób zdefiniowane zostanie powiązanie pomiĊdzy lokalną gaáĊzią master a zdal-
ną gaáĊzią master. Powiązanie to jest zapisywane w pliku .git/config w postaci wpisu:
[branch master ]
remote = origin
merge = refs/heads/master
Krok 5.
Ostatnie z poleceĔ:
git reset --hard HEAD
przywraca stan plików obszaru roboczego do postaci z ostatniej rewizji zawartej w lo-
kalnej gaáĊzi master.
Klonowanie repozytorium z dysku
OperacjĊ klonowania repozytorium moĪemy wykonaü lokalnie, bez Īadnej komunika-
cji sieciowej. Adresem repozytorium zdalnego moĪe byü ĞcieĪka prowadząca do repo-
zytorium. Polecenie:
git clone C:my
eposexample .
klonuje repozytorium z folderu C:my
eposexample do folderu bieĪącego.
ĝcieĪkĊ prowadzącą do repozytorium zdalnego moĪemy takĪe przekazaü jako parametr
polecenia git remote, np.:
git remote add origin C:my
eposexample
DziĊki takiemu rozwiązaniu üwiczenia dotyczące synchronizacji repozytoriów bĊdzie-
my mogli wykonywaü w peáni lokalnie.
çwiczenie 17.3
W folderze cw-17-03/ wykonaj repozytorium przedstawione na rysunku 17.1.
Rysunek 17.1.
Repozytorium
z üwiczenia 17.3
192
çwiczenie 17.4
CzöĈè III i Gaäözie zdalne
Repozytorium z üwiczenia 17.3 sklonuj do folderu cw-17-04/.
ROZWIðZANIE
Przyjmijmy, Īe foldery:
cw-17-03/
cw-17-04/
znajdują siĊ w tym samym folderze.
W wierszu poleceĔ przejdĨ do folderu cw-17-04/ i wydaj komendĊ:
git clone ../cw-17-03 .
Alternatywnie klonowanie moĪesz wykonaü, wydając polecenie:
git clone cw-17-03 cw-17-04
w folderze zawierającym foldery cw-17-03/ oraz cw-17-04/.
Po tej operacji w folderze cw-17-04/ znajdziemy kopiĊ repozytorium z üwiczenia 17.3.
Ponadto w pliku .git/config znajdziemy wpisy:
[remote origin ]
fetch = +refs/heads/*:refs/remotes/origin/*
url = C:/git/cw-17-04/../cw-17-03
[branch master ]
remote = origin
merge = refs/heads/master
Definiowanie repozytoriów zdalnych
Do ustalenia adresu repozytorium zdalnego sáuĪy komenda:
git remote add nazwa adres
Parametrem nazwa okreĞlamy sposób odwoáywania siĊ do definiowanego repozytorium
zdalnego, a parametr adres okreĞla jego adres. Polecenie git remote add zapisuje in-
formacje o repozytorium zdalnym w pliku .git/config. Przykáadowy wpis przyjmuje
postaü przedstawioną na listingu 17.1.
Listing 17.1. Fragment pliku .git/config zawierający informacje o repozytorium zdalnym nazwa
[remote nazwa ]
url = adres
fetch = +refs/heads/*:refs/remotes/nazwa/*
Rozdziaä 17. i Definiowanie powiñzania miödzy repozytorium lokalnym a zdalnym
193
JeĞli repozytorium znajduje siĊ na dysku w folderze C:
eposzdalne i zechcemy mu
nadaü nazwĊ zdalne, polecenie git remote przyjmie wówczas postaü:
git remote add zdalne C:
eposzdalne
W kolejnych rozdziaáach repozytoria zdalne bĊdą pochodziáy z serwerów github.com
oraz bitbucket.org. Polecenie git remote przyjmie wówczas postaü:
git remote add my git@github.com:gajdaw/symfony.git
git remote add gajdaw git@bitbucket.org:gajdaw/symfony.git
Do wyĞwietlenia listy repozytoriów zdalnych sáuĪy polecenie:
git remote –v
Adres repozytorium zdalnego moĪemy usunąü poleceniem:
git remote rm nazwa
Definiowanie powiñzania miödzy
gaäöziñ lokalnñ a gaäöziñ Ĉledzonñ
Dla kaĪdej gaáĊzi zawartej w repozytorium lokalnym moĪemy ustaliü odpowiadającą
jej gaáąĨ Ğledzoną (ang. tracking branch). DziĊki temu polecenia synchronizacji, np.:
git pull
git push
git fetch
mogą byü wywoáywane bez parametrów. W takiej sytuacji synchronizacja bĊdzie do-
tyczyáa bieĪącej gaáĊzi oraz odpowiadającej jej gaáĊzi Ğledzonej.
Nazwy gaáĊzi Ğledzonych poznamy, wydając polecenie:
git config --list
Wydruk bĊdzie zawieraá informacje postaci:
branch.master.remote=origin
branch.master.merge=refs/heads/master
Ogólnie rzecz biorąc, dla gaáĊzi lokalnej o nazwie X wpisy ustalające gaáąĨ Ğledzoną
bĊdą nastĊpujące:
branch.X.remote=...
branch.X.merge=...
Nazwö gaäözi Ĉledzonej odpowiadajñcej gaäözi X poznamy takĔe, wydajñc komendy:
git config --get branch.X.remote
git config --get branch.X.merge
194
CzöĈè III i Gaäözie zdalne
Do rĊcznego ustalenia gaáĊzi Ğledzonej moĪemy uĪyü polecenia:
git branch --set-upstream galaz-lokalna repozytorium-zdalne/galaz-zdalna
Polecenie:
git branch --set-upstream master origin/master
ustala, Īe gaáĊzią Ğledzoną dla gaáĊzi master bĊdzie gaáąĨ master w repozytorium origin.
Podobnie polecenie:
git branch --set-upstream lorem ipsum/dolor
ustala, Īe gaáĊzią Ğledzoną dla gaáĊzi lorem bĊdzie gaáąĨ dolor w repozytorium o na-
zwie ipsum.
Wydruk generowany poleceniem:
git config --list
przyjmie postaü:
branch.lorem.remote=ipsum
branch.lorem.merge=refs/heads/dolor
Polecenie:
git branch --set-upstream master origin/master
jest równowaĔne dwóm poleceniom:
git config branch.master.remote origin
git config branch.master.merge refs/heads/master
Listowanie gaäözi
Do sprawdzania listy gaáĊzi lokalnych sáuĪy poznane w czĊĞci drugiej polecenie:
git branch
GaáĊzie zdalne poznamy, wydając polecenie:
git branch –r
Komenda:
git branch -a
wyĞwietla listĊ wszystkich gaáĊzi.
Skorowidz
B
Baazar, 270
baza danych
repozytorium, Patrz: repozytorium
rewizji, Patrz: repozytorium
Bitbucket, 20, 269, 270, 280, 283, 287, 292, 293,
313
interfejs, 275
branch, Patrz: gaáąĨ
C
commit, Patrz: rewizja, operacja zatwierdzania
Cygwin, 278
cytowanie, 102
D
diagram stanów, 78
DVCS, Patrz: system kontroli wersji
dziennik reflog, 100, 137, 154, 161, 162, 178, 237
edytor
tekstowy, 28, 58
vi, 28, 59
E
F
fast forward, Patrz: przewijanie do przodu
file
added, Patrz: plik dodany
deleted, Patrz: plik usuniĊty
modified, Patrz: plik zmodyfikowany
renamed, Patrz: plik o zmienionej nazwie
staged, Patrz: plik indeksowany
unmodified, Patrz: plik aktualny
unstaged, Patrz: plik niezainindeksowany
untracked, Patrz: plik nieĞledzony
file modified, Patrz: plik zmodyfikowany
folder
domowy uĪytkownika, 107
roboczy, 43
fork, Patrz: rozgaáĊzianie
G
gaáąĨ, 141, 156, 161, 181, 303
bieĪąca, 142, 148, 153, 193
lista, 194
lokalna, 194, 217, 285
áączenie, 167, 170, 171, 175, 176, 178, 181,
195, 233
master, 141, 153, 211, 215, 285
przeáączanie, 145, 147, 208
przesáanie ze zmianą nazwy, 209
przesyáanie, 210
rozáącznoĞü, 150
Ğledzona, 193, 194, 199, 209
tworzenie, 141, 143, 144, 147
tymczasowa, 221
usuwanie, 141, 153, 154, 157, 209
wysyáanie, 206
zawieranie, 150
zdalna, 194, 209
zmiana nazwy, 155
GFM, 313
Github, 19, 20, 269, 279, 283, 286, 292, 293, 313
interfejs, 271
326
Git. Rozproszony system kontroli wersji
Github Flavored Markdown, Patrz: GFM
GitPad, 28
Google Code, 19
graf niespójny, 223
H
HEAD, 93, 96
hosting, 19
I
importowanie kodu, 286
indeks, 56, 72, 127, 128, 198, 245
indeksowanie, 52
jĊzyk
bash, 109
MarkDown, 313
jQuery, 39
J
K
klient
Git, 278
github.com, 277
klucz SSH, 278, 279, 280
komenda, 130
echo, 135
find, 24, 131, 134
git, 24, 130
git add, 43, 51, 57, 75, 128, 130, 133, 134
git archive, 89, 291
git backup, 210
git branch, 46, 130, 133, 143, 144, 153, 155,
182, 189, 194, 226, 227
git checkout, 45, 86, 125, 133, 145, 147, 148,
164, 182, 208, 217, 229, 241, 242, 243, 260,
264
git checkout master, 46
git clone, 30, 129, 131, 187, 191
git commit, 43, 58, 75, 116, 117, 128, 133,
134, 162, 199, 260
git config, 130, 183, 193, 227, 259, 265
git diff, 157, 183, 245, 248, 263, 265
git fetch, 188, 193, 195, 226, 227
git gc, 183
git gui, 132
git help add, 130
git help branch, 130
git help config, 130
git help init, 130
git init, 29, 130, 131, 141, 188
git log, 33, 91, 96, 104, 131, 132, 173, 255,
263, 265
git merge, 168, 170, 171, 173, 176, 178, 181,
183, 195, 217, 228, 233, 238, 239
git mv, 60
git prune, 164, 183
git pull, 72, 129, 193, 196, 198, 199, 228, 301
git push, 72, 129, 193, 199, 210, 217, 228, 301
git rebase, 116, 117, 119, 175, 176, 178, 181,
184, 217, 236, 238, 240, 264
git reflog, 100, 137, 184
git remote, 227
git remote add, 192, 222, 225, 227, 301
git remote add origin, 188, 191, 219, 220, 226
git remote rm, 227
git reset, 39, 86, 116, 133, 157, 173, 178, 184,
189, 226
git revert, 116, 120, 127, 181
git rev-list, 137
git rev-parse, 101, 137
git rm, 51, 59, 134
git shortlog, 131
git show, 85, 242, 243, 264
git simple commits, 121
git simple-commit, 110, 112
git simple-loop, 111
git status, 68, 75, 128, 133, 182
git symbolic, 182
git tag, 84
gitk, 132
skrót, 107
ssh, 24
wc, 24
konflikt, 233, 236, 263
binarny, 238, 242, 263
dublowanie, 238
tekstowy, 233, 236, 242, 263
konsola, 25, 26
bash, 26
kontekst, 248
kontrola
akceptowanych rewizji, 269
spójnoĞci danych, 129
uprawnieĔ uĪytkowników, 269
kopia bezpieczeĔstwa, 30, 291
L
Linux, 278
lokalnoĞü, 129
Skorowidz
M
menu kontekstowe, 26
Mercurial, 270
migawka, Patrz: snapshot
N
nazwa symboliczna HEAD, 93, 96
O
obszar roboczy, 39, 56, 72, 127, 128, 132, 148,
198, 211, 245
openssh, 278
operacja zatwierdzania, 15, 16
P
pakiet openssh, 278
parent, Patrz: rodzic
plik
aktualny, 51, 52, 54, 128
binarny, 257
dodany, 69
git/HEAD, 93
git/info/exclude, 75, 76, 135
gitattributes, 258, 261
gitignore, 75, 76, 135
ignorowany, 53, 75, 78, 128
konfiguracyjny, 76, 131
konfiguracyjny gitconfig, 107
nieignorowany, 53, 78, 128
nieĞledzony, 51, 52, 53, 57
niezaindeksowany, 53, 54, 56, 59, 128
o zmienionej nazwie, 69
odpowiadające rewizji, 89
przywracanie, 40
stan, 68, 127
stan dwuliterowy, 69
tekstowy, 238, 257
usuniĊty, Patrz: plik usuniĊty
zaindeksowany, 53, 56, 128
zmiana nazwy, 60
zmieniony, 255
zmodyfikowany, 51, 52, 69
polecenie, Patrz: komenda
praca grupowa, 18, 30, 127, 233, 291, 293
program GitPad, 28
projekt
historia, 18, 33, 36, 115, 116, 125, 127
hosting, 19
stan, 17, 108, 125
327
protokóá
file, 277
Git, 277
HTTPS, 277
SSH, 277, 280
przestrzeĔ robocza, 51, 52
przewijanie do przodu, 168, 169, 199, 223
przodek, 96
pull request, Patrz: Īądanie aktualizacji
R
repo, Patrz: repozytorium
repository, Patrz: repozytorium
bare, Patrz: repozytorium surowe
repozytorium, 14, 18, 29, 30, 39, 48, 52, 56, 127,
128, 141
gáówne, 216
inicjalizowanie, 29
klonowanie, 30, 187, 188, 191, 293, 301, 302
lokalne, 187, 188, 195, 198, 199, 225, 302
áączenie, 219, 223
o historii nieliniowej, 94
prywatne, 271, 291, 292
publiczne, 271
stan, 61
surowe, 72, 198, 216, 226
synchronizacja, 195, 225
Ğledzone, 272
tworzenie, 283, 287
uaktualnianie, 197, 199
wspóádzielenie, 269, 293
zdalne, 187, 188, 192, 193, 195, 199, 209,
211, 219, 225, 280
zwykáe, 72, 210
revision, Patrz: rewizja
revision control system, Patrz: system kontroli
wersji
rewizja, 16, 18, 34, 45, 52, 127, 156, 245
akceptowana, 269
domyĞlna, 93
graf niespójny, 223
identyfikacja, 91, 92, 93, 100
identyfikator, 34
áączenie, 115, 117, 119
tworzenie, 58, 142, 143
usuwanie, 115, 116, 127
zabezpieczanie przed utratą, 209
zgubiona, 149, 163
rodzic, 95, 96, 97
rozgaáĊzianie, 293
328
Git. Rozproszony system kontroli wersji
S
serwer
bitbucket.org, 25
SSH, 25
skrót SHA-1, 91, 92, 96, 129, 148, 154, 164, 195
snapshot, 44
Source Forge, 19
stan detached HEAD, 148, 163, 164, 181, 236, 237
stan projektu, Patrz: projekt stan
strumieĔ przekierowanie, 102
system
jądro, 13
kontroli rewizji, Patrz: system kontroli wersji
kontroli wersji, 13, 270
Ğledzenia báĊdów, 30, Patrz: Ğledzenie báĊdów
ć
ĞcieĪka dostĊpu, 24
Ğledzenie báĊdów, 269, 291, 315, 319
T
tag, Patrz: znacznik
annotated, Patrz: znacznik opisany
lightweight, Patrz: znacznik lekki
U
ujednolicony format opisu, 246
V
vi, 28, 59
W
wiersz poleceĔ, 26, 102
working area, Patrz: obszar roboczy
working directory, Patrz: obszar roboczy
Z
zmienna
Ğrodowiskowa
PATH, 23
znacznik, 83, 92, 96, 156, 291
dane, 85
dostĊpnoĞü, 85, 136
konfliktu, 234
lekki, 83, 84
opisany, 83, 84
tworzenie, 136
usuwanie, 85, 136
znak
!, 108
, 102, 103
^, 97, 98, 99, 102
|, 102
, 102
, 102
koĔca wiersza, 259, 260, 261
tylda, 96, 98, 99
záamania wiersza, 24
ē
Īądanie aktualizacji, 269, 293, 294, 301, 303, 319
Pobierz darmowy fragment (pdf)