Различия между git pull origin master и git pull origin / master

284

В чем разница между git pull origin masterи git pull origin/master?

Рейчел
источник
1
спокойствие в значительной степени покрывает это, но без ответа то, что вы никогда не должны делать git pull origin/master. Если вы хотите объединить [локально сохраненную] удаленную ветку origin/master, просто используйте git merge origin/master.
Каскабель
3
@Jefromi: Можете ли вы объяснить, почему всегда лучше выполнять git merge по сравнению с git pull?
Рэйчел
16
git pullзначит с git fetchпоследующим git merge. Он извлекает контент с пульта, а затем объединяет его с вашей текущей веткой. Но origin/masterэто локальная ветка (отслеживание удаленной ветки). Если вы хотите объединить это, вам не нужно ничего извлекать. Неверно говорить, git pull origin/masterкогда вы на самом деле не получаете данные с пульта.
Каскабель
Спасибо Jefromi за полезную информацию. Это действительно помогает понять довольно легко не так просто концепцию.
Рэйчел
Для тех, кто читает это и все еще в замешательстве, origin/masterэто локально хранящаяся ветвь, которая кэширует основную ветвь на удаленном источнике.
iheanyi

Ответы:

356

git pull origin masterизвлечет изменения из originудаленного masterфилиала и объединит их с локальным извлеченным филиалом.

git pull origin/masterизвлечет изменения из локально сохраненной ветви origin/masterи объединит их с локальной извлеченной веткой. origin/masterОтрасль по существу «сохраненная копия» , что в последний раз вытащили из origin, поэтому он называется удаленный филиал в мерзавца жаргона. Это может быть несколько запутанным.

Вы можете увидеть, какие ветки доступны с, git branchи git branch -rувидеть «удаленные ветви».

Якоб Борг
источник
1
в случае, git pull origin masterесли он всегда будет сливаться с основной веткой, скажем, я нахожусь в другой ветке в моем репо, а затем выполняю указанную выше команду, обновит ли моя текущая ветка исходными удаленными изменениями или моя основная ветвь с изменениями?
Рэйчел
4
@calmh: git merge(и поэтому git pull) всегда сливается с текущей веткой. Чтобы объединиться с чем-то отличным от вашей текущей ветки, просто сначала проверьте это.
Каскабель
2
хм .. я не вижу, как 'origin / master' отличается от 'origin master'; они оба главная ветка по происхождению. Можете ли вы привести пример, когда они будут другими?
Хазен
69
git pull origin/masterВозможно, это была правильная команда, когда она была написана, но в настоящее время (git 1.7.10.3) она терпит неудачу fatal: 'origin/master' does not appear to be a git repository(как и должно быть - pull всегда используется для извлечения из удаленных устройств).
user1338062
3
Почему Git так запутанно? Итак, у нас есть 4 репозитория, верно? Существует (1) удаленный репозиторий, (2) локальный репозиторий, (3) промежуточный репозиторий, (4) локально-удаленный aka origin / master? Зачем Git вообще иметь # 4 хранилище?
Мюген
3

git pull origin masterИзвлечет все изменения из главной ветки пульта и объединит их с вашим локальным. Обычно мы не используем git pull origin / master. Мы можем сделать то же самое с помощью. git merge origin/masterОн объединит все изменения из «кэшированной копии» главная ветка origin в вашу локальную ветку. В моем случае git pull origin/masterвыкидывает ошибку.

Дхрувил Шах
источник
1

git pull= git fetch+git merge origin/branch

git pullи git pull origin branchотличаются только тем, что последний будет «обновлять» происхождение / ветвь, а не все origin / *, как это git pullпроисходит

git pull origin/branchпросто не будет работать, потому что он пытается сделать git fetch origin/branchнедействительным.

Вопрос по теме: git fetch + git merge origin / master против git pull origin / master

user33276346
источник