Я читал около git pull
и git fetch
, теперь я немного запутался. Так что на главной ветке были сделаны коммиты с тех пор, как я проделал последнюю работу. Если я хочу обновить свой локальный репозиторий, чтобы продолжить работу, я должен вытащить коммиты из главной ветки в свою ветку? Я попытался сделать git fetch
из своей ветви, чтобы обновить ее. Но из того, что я читал, это не полностью обновляет мой локальный репозиторий и что мне нужно будет объединиться.Обновление локального хранилища git с удаленным репозиторием
ответ
git fetch
только загружает файлы исправлений из удаленного репозитория, но не применяет их. Простыми словами git pull
является кратким для git fetch; git merge;
. Чтобы обновить файлы git fetch
не достаточно - сделать git pull
Кроме того, вопрос уже ответил здесь: https://stackoverflow.com/questions/292357/difference-between-git-pull-and-git-fetch
Хорошо, это имеет смысл, спасибо. Чтобы обновить мой локальный репозиторий, я проверяю мастер-ветвь и выполняю «главный источник происхождения git pull» или делаю это на моей собственной ветке? – Jasmine
@ Жасмин: для начинающих я настоятельно рекомендую избегать «git pull», поскольку это кажется слишком магии. Используйте 'git fetch', который направляет ваш Git на вызов другого Git в' origin' и загружает элементы, а затем использует 'git merge' или' git rebase' - в зависимости от того, какой ваш рабочий поток требует-для * интегрировать * предметы, которые вы только что подобрали. Когда что-то пойдет не так (и в конечном итоге это произойдет), вы узнаете, какая * часть * пошла не так и, по крайней мере, знаете, что спросить дальше. Также полезно знать, что 'git fetch' всегда безопасен независимо от того, в каком состоянии вы находитесь, но' git merge' и 'git rebase' требуют, чтобы вещи были« чистыми ». – torek
git fetch
загрузит всю информацию о хранилище от вашего remote
. Это хранит его на пульте дистанционного управления (попробуйте запустить git remote show
). Итак, теперь у вас будет ветвь с именем origin\master
. Вы можете видеть свои ветви на вашем пульте, запустив git branch -a
origin\master
отличается от master
, поэтому вам нужно будет git merge origin\master
, чтобы синхронизировать с удаленным началом.
git pull
автоматически запускает несколько команд
git fetch
git merge origin\master
Я рекомендовал бы через этот краткий учебник: https://try.github.io/
git pull
на самом деле представляет собой комбинацию: git fetch
& git merge
. Вероятно, вы должны сделать следующее:
git checkout master
# переключиться на мастер-ветку на местном репо.git status
# убедитесь, что вы чистыеgit pull
# получить последние коммиты из удаленного репоgit checkout <your-branch>
# переключиться обратно на боковую ветвьgit merge master
# сливаться мастер совершает в вашу ветвь- необязательно:
git push origin <your-branch>
# для резервного копирования ваших коммитов/обновлений в удаленном репо
"master branches"? есть только одна ветка, называемая мастером. – ItayB
@ItayB: Ну, есть (нуль или) один 'master' * за репозиторий *. Если у вас есть репозиторий Git самостоятельно, и вы «git fetch» из другого репозитория Git с именем «origin», есть два 'master' s: yours и origin. Но это действительно зависит от того, что/как вы считаете! – torek
@torek согласен - это зависит от того, как вы рассчитываете. Я считаю 'master' и' origin/master' как разные ветви – ItayB