Wymienione kroki będą działać, ale istnieje dłuższy sposób, który daje więcej opcji:
git checkout dmgr2 # gets you "on branch dmgr2"
git fetch origin # gets you up to date with origin
git merge origin/master
fetch
Polecenie może być wykonane w dowolnym momencie przed merge
, czyli można zamienić kolejność fetch i kasa, bo fetch
po prostu podchodzi do wskazanego zdalnego ( origin
) i mówi do niego: „daj mi wszystko, co masz, że nie mam ”, tzn. wszystkie zatwierdzenia we wszystkich oddziałach. Są one kopiowane do twojego repozytorium, ale nazwane origin/branch
dla dowolnego oddziału wymienionego branch
na pilocie.
W tym momencie możesz użyć dowolnej przeglądarki ( git log
, gitk
itp.), Aby zobaczyć „to, co mają”, czego nie masz, i odwrotnie. Czasami przydaje się to tylko w przypadku Ciepłych Rozmytych Uczuć („och, tak, to jest właśnie to, czego chcę”), a czasem przydaje się całkowicie do zmiany strategii („kurwa, jeszcze tego NIE chcę”).
Na koniec merge
polecenie przenosi dane zatwierdzenie, które można nazwać jako origin/master
, i robi wszystko, co konieczne, aby wprowadzić to zatwierdzenie i jego przodków, do dowolnej gałęzi, na której się znajdujesz podczas uruchamiania merge
. Możesz wstawić --no-ff
lub, --ff-only
aby zapobiec szybkiemu przewijaniu do przodu, lub scalić tylko, jeśli wynik jest szybkim przewijaniem do przodu, jeśli chcesz.
Podczas korzystania z sekwencji:
git checkout dmgr2
git pull origin master
że pull
przesyła zlecenie polecenia git uruchomić git fetch
, a następnie moralnym odpowiednikiem git merge origin/master
. Jest to więc prawie to samo, co wykonanie dwóch kroków ręcznie, ale istnieją pewne subtelne różnice, które prawdopodobnie nie dotyczą ciebie zbytnio. (W szczególności fetch
krok po kroku pull
przynosi tylko origin/master
i nie aktualizuje referencji w twoim repozytorium: 1 wszelkie nowe zatwierdzenia kończą się odniesieniem tylko przez specjalne FETCH_HEAD
odniesienie).
Jeśli użyjesz bardziej wyraźnego git fetch origin
(a następnie opcjonalnie rozejrzyj się), a następnie git merge origin/master
sekwencji, możesz również master
zaktualizować swój lokalny za pomocą pilota, z tylko jednym fetch
uruchomieniem w sieci:
git fetch origin
git checkout master
git merge --ff-only origin/master
git checkout dmgr2
git merge --no-ff origin/master
na przykład.
1 Druga część została zmieniona - mówię „naprawiona” - w git 1.8.4, która teraz aktualizuje oportunistycznie odniesienia do „zdalnej gałęzi”. (Była to, jak mówią informacje o wydaniu, celowa decyzja projektowa, aby pominąć aktualizację, ale okazuje się, że więcej osób woli, aby git ją aktualizował. Jeśli chcesz mieć stary SHA-1 ze zdalnej gałęzi, domyślnie jest zapisywany w , a tym samym możliwe do odzyskania po ponownym logowaniu. Umożliwia to także nową funkcję git 1.9 / 2.0 do znajdowania wcześniejszych wersji bazy).