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
fetchPolecenie może być wykonane w dowolnym momencie przed merge, czyli można zamienić kolejność fetch i kasa, bo fetchpo 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/branchdla dowolnego oddziału wymienionego branchna pilocie.
W tym momencie możesz użyć dowolnej przeglądarki ( git log, gitkitp.), 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 mergepolecenie 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-fflub, --ff-onlyaby 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 pullprzesył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 fetchkrok po kroku pullprzynosi tylko origin/master i nie aktualizuje referencji w twoim repozytorium: 1 wszelkie nowe zatwierdzenia kończą się odniesieniem tylko przez specjalne FETCH_HEADodniesienie).
Jeśli użyjesz bardziej wyraźnego git fetch origin(a następnie opcjonalnie rozejrzyj się), a następnie git merge origin/mastersekwencji, możesz również masterzaktualizować swój lokalny za pomocą pilota, z tylko jednym fetchuruchomieniem 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).