2010-07-27 12 views
32

Próbuję uzyskać dokładniejsze zrozumienie git.Co właściwie oznacza wynik działania polecenia git pull?

Czy ktoś może mi podać proste wyjaśnienie liniowe, co oznacza wyjściowy git pull? Przykład:

remote: Counting objects: 11, done. 
remote: Compressing objects: 100% (5/5), done. 
remote: Total 7 (delta 2), reused 0 (delta 0) 
Unpacking objects: 100% (7/7), done. 
From ssh://my.remote.host.com/~/git/myproject 
* branch   master  -> FETCH_HEAD 
Updating 9d447d2..f74fb21 
Fast forward 
app/controllers/myproject_controller.rb | 13 +++++++++++++ 
1 files changed, 13 insertions(+), 0 deletions(-) 

Odpowiedz

51

Pod maską git pull jest git fetch następnie git merge. Oto część pobierania:

remote: Counting objects: 11, done. 
remote: Compressing objects: 100% (5/5), done. 
remote: Total 7 (delta 2), reused 0 (delta 0) 

W tym momencie powiedziałeś pilotowi, czego chcesz. Znajduje wszystkie obiekty, które musi ci dać (licząc je w procesie, jak sądzę), kompresuje je w celu szybszego transferu przez sieć, a następnie raportuje, co wysyła. Obiekty mogą być obiektami blob, drzewami, zatwierdzeniami lub znacznikami - patrz na przykład git book, aby uzyskać więcej informacji.

Unpacking objects: 100% (7/7), done. 

Otrzymujesz opakowanie (zestaw skompresowanych obiektów) i rozpakowujesz go.

From ssh://my.remote.host.com/~/git/myproject 
* branch   master  -> FETCH_HEAD 

Pobrałeś "master" od danego pilota; ref FETCH_HEAD teraz wskazuje na to. Teraz przechodzimy do scalania - dokładnie, git połączy FETCH_HEAD (główny oddział zdalnego) w twojej obecnej gałęzi (prawdopodobnie master).

Updating 9d447d2..f74fb21 
Fast forward 

Okazuje się, że nie odbiega od głównego oddziału pilota, więc scalanie jest szybko do przodu (trywialne seryjnej, gdzie po prostu przesuwa się do przodu w historii). Git odnotowuje oryginalną pozycję twojego oddziału głównego (9d447d2) i nową pozycję (f74fb21), do której został przyspieszony. Gdybyś oddzielił się od głównego oddziału zdalnego, zobaczysz tutaj wynik scalania rekursywnego - Merge made by recursive, być może wraz z pewnymi konfliktami scalającymi Auto-merged <file> i (oh no!)!

app/controllers/myproject_controller.rb | 13 +++++++++++++ 
1 files changed, 13 insertions(+), 0 deletions(-) 

Wreszcie pokazuje różnicę między oryginalną i późniejszą pozycją twojego głównego oddziału; to jest zasadniczo to, co otrzymasz od git diff --stat [email protected]{1} master.

+0

+1 "Okazuje się, że nie odeszliście od głównego oddziału pilota" - co oznacza, że ​​nie utworzono nowego oddziału? Co oznacza ++ lub - znaczy –

+1

@Pangea i inni, którzy mogą się zastanawiać w przyszłości: Nie, nie oznacza to, że nie utworzono nowej gałęzi, oznacza to po prostu, że nie dokonaliście jednocześnie zmian, które nie zostały wprowadzone jeszcze zawarte w odległym oddziale. W tym przypadku nie ma nic do scalenia, wystarczy dodać nowe zatwierdzenia na lokalnym oddziale, a zarówno lokalny oddział, jak i zdalny oddział będą identyczne. ++ i - są po prostu "graficznymi" reprezentacjami ilości zmian w każdym pliku (+ są to wstawienia i - jest to usunięcie), a tym samym informują w przybliżeniu, gdzie większość zmian poszła. – tne