Różnice między git pull origin master i git pull origin / master

283

Jaka jest różnica między git pull origin masteri git pull origin/master?

Rachel
źródło
1
calmh prawie to obejmuje, ale nie ma odpowiedzi, że nigdy nie powinieneś tego robić git pull origin/master. Jeśli chcesz scalić zdalną gałąź [lokalnie przechowywaną] origin/master, po prostu użyj git merge origin/master.
Cascabel
3
@Jefromi: Czy możesz wyjaśnić, dlaczego zawsze lepiej jest łączyć git w porównaniu do git pull?
Rachel
16
git pulloznacza, git fetchpo którym następuje git merge. Pobiera zawartość z pilota, a następnie łączy ją z bieżącym oddziałem. Ale origin/masterjest oddziałem lokalnym (śledzącym oddział zdalny). Jeśli chcesz je scalić, nie musisz niczego pobierać. Mylące jest mówienie, git pull origin/mastergdy tak naprawdę nie pobierasz danych ze zdalnego.
Cascabel
Dzięki Jefromi za przydatne informacje. Naprawdę pomaga zrozumieć dość łatwo nie tak łatwą koncepcję.
Rachel
Dla osób czytających to i wciąż zdezorientowanych origin/masterjest lokalnie przechowywana gałąź, która buforuje gałąź master na zdalnym źródle.
iheanyi

Odpowiedzi:

355

git pull origin masterpobierze zmiany ze originzdalnego, masterrozgałęzienia i scali je z lokalnym oddziałem wyewidencjonowanym.

git pull origin/masterpobierze zmiany z lokalnie przechowywanej gałęzi origin/masteri scali ją z lokalną gałęzią wyrejestrowaną. origin/masterOddział jest w istocie „buforowane kopia”, co ostatnio wyciągnął z origin, dlatego to się nazywa zdalnego git oddział w żargonie. To może być nieco mylące.

Możesz zobaczyć, jakie gałęzie są dostępne git branchi git branch -r„zdalne gałęzie”.

Jakob Borg
źródło
1
w przypadku git pull origin master, gdy zawsze będzie się łączyć z gałęzią główną, powiedzmy, że jestem w innej gałęzi w moim repozytorium, a następnie wykonuję powyższe polecenie, czy zaktualizuje ona moją bieżącą gałąź o zmiany zdalne pochodzenia lub moją gałąź główną o zmiany?
Rachel
4
@calmh: git merge(i dlatego git pull) zawsze łączy się z bieżącym oddziałem. Aby połączyć się z czymś innym niż obecny oddział, po prostu sprawdź to.
Cascabel
2
um .. Nie rozumiem, w jaki sposób „origin / master” różni się od „origin master”; oboje są główną gałęzią pochodzenia. Czy potrafisz podać przykład, kiedy byłyby inne?
hasen
69
git pull origin/masterbyć może było prawidłowym poleceniem, kiedy zostało napisane, ale obecnie (git 1.7.10.3) zawodzi fatal: 'origin/master' does not appear to be a git repository(tak jak powinno - pull jest zawsze do ściągania z pilotów).
user1338062,
3
Dlaczego git jest tak mylący? Więc mamy 4 repozytoria całkowicie, prawda? Istnieje (1) zdalne repozytorium, (2) lokalne repozytorium, (3) repozytorium pomostowe, (4) lokalnie-zdalne aka origin / master? Dlaczego git miałby w ogóle mieć repozytorium nr 4?
Mugen
3

git pull origin masterpobierze wszystkie zmiany z gałęzi głównej pilota i połączy je z lokalną. Na ogół nie używamy git pull origin / master. Możemy zrobić to samo przez git merge origin/master. Scali wszystkie zmiany z „buforowanej kopii” gałąź główna origin do gałęzi lokalnej. W moim przypadku git pull origin/masterbłąd jest zgłaszany .

Dhruvil Shah
źródło
1

git pull= git fetch+git merge origin/branch

git pull i git pull origin branch różnią się tylko tym, że ta ostatnia będzie tylko „aktualizować” pochodzenie / gałąź, a nie wszystkie pochodzenie / *, jak to git pullrobi.

git pull origin/branchpo prostu nie zadziała, ponieważ próbuje zrobić coś, git fetch origin/branchco jest nieprawidłowe.

Powiązane pytanie: git fetch + git merge origin / master vs git pull origin / master

użytkownik33276346
źródło