2015-10-05 4 views
0

Я пытаюсь понять, когда использовать get fetch вместо git pull. Я прочитал ранее (например, here и here), что разница между git pull и get fetch заключается в том, что pull делает выборку, за которой следует слияние. Это все хорошо и хорошо, кроме ... wait - что делает fetch на самом деле, если он не сливается? Что еще означает получение обновлений из удаленного репозитория, если вы не слились в локальный репозиторий?Что делает git fetch, если он не сливается?

Например, скажем, что мой локальный репозиторий имеет три фиксации и один фиксатор перед удаленным репозиторием. Если я сделаю git pull, я увижу эти три фиксации в моем местном хранилище, с возможностью «< < < < < < < HEAD« в некоторых файлах, если есть конфликт слияния. В git-журнале будет дополнительная фиксация для тяги.

Если я сделаю выборку, не будут ли эти три коммиты появляться в моем локальном репозитории? Если они это сделают, то как это эффективно отличается от тяги? Оперирует ли он конфликтами иначе, чем тянет или есть какая-то другая разница?

+2

Возможный дубликат [В чем разница между «git pull» и «git fetch»?] (Http://stackoverflow.com/questions/292357/what-are-the-differences-between-git-pull -and-git-fetch) – Makoto

ответ

1

Ваш репозиторий git хранит данные о локальных и удаленных филиалах отдельно. Когда вы git push или git pull, git обычно свяжет вашу локальную ветку (скажем develop) с удаленной веткой (скажем origin/develop). Если вы делаете git fetch, он просто обновляет локальную копию удаленной ветви. Вы можете увидеть это, выполнив git checkout origin/develop. Если вы хотите впоследствии обновить локальную ветвь, запустите git merge origin/develop.

TL; DR; git pull ~= git fetch + git merge

+0

Интересно. Я думаю, что это заполнило недостающее звено в моем понимании fetch/pull. Благодарю. –

+0

[далее] (https://git-scm.com/book/en/v2/Git-Internals-Git-References) по ссылкам git (материал, который хранит информацию о том, что фиксирует ваши ветви, теги и т. Д. указать на). – Sam

Смежные вопросы