2017-02-06 4 views
1

Я читал около git pull и git fetch, теперь я немного запутался. Так что на главной ветке были сделаны коммиты с тех пор, как я проделал последнюю работу. Если я хочу обновить свой локальный репозиторий, чтобы продолжить работу, я должен вытащить коммиты из главной ветки в свою ветку? Я попытался сделать git fetch из своей ветви, чтобы обновить ее. Но из того, что я читал, это не полностью обновляет мой локальный репозиторий и что мне нужно будет объединиться.Обновление локального хранилища git с удаленным репозиторием

+0

"master branches"? есть только одна ветка, называемая мастером. – ItayB

+0

@ItayB: Ну, есть (нуль или) один 'master' * за репозиторий *. Если у вас есть репозиторий Git самостоятельно, и вы «git fetch» ​​из другого репозитория Git с именем «origin», есть два 'master' s: yours и origin. Но это действительно зависит от того, что/как вы считаете! – torek

+0

@torek согласен - это зависит от того, как вы рассчитываете. Я считаю 'master' и' origin/master' как разные ветви – ItayB

ответ

0

git fetch только загружает файлы исправлений из удаленного репозитория, но не применяет их. Простыми словами git pull является кратким для git fetch; git merge;. Чтобы обновить файлы git fetch не достаточно - сделать git pull

Кроме того, вопрос уже ответил здесь: https://stackoverflow.com/questions/292357/difference-between-git-pull-and-git-fetch

+0

Хорошо, это имеет смысл, спасибо. Чтобы обновить мой локальный репозиторий, я проверяю мастер-ветвь и выполняю «главный источник происхождения git pull» или делаю это на моей собственной ветке? – Jasmine

+0

@ Жасмин: для начинающих я настоятельно рекомендую избегать «git pull», поскольку это кажется слишком магии. Используйте 'git fetch', который направляет ваш Git на вызов другого Git в' origin' и загружает элементы, а затем использует 'git merge' или' git rebase' - в зависимости от того, какой ваш рабочий поток требует-для * интегрировать * предметы, которые вы только что подобрали. Когда что-то пойдет не так (и в конечном итоге это произойдет), вы узнаете, какая * часть * пошла не так и, по крайней мере, знаете, что спросить дальше. Также полезно знать, что 'git fetch' всегда безопасен независимо от того, в каком состоянии вы находитесь, но' git merge' и 'git rebase' требуют, чтобы вещи были« чистыми ». – torek

0

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/

1

git pull на самом деле представляет собой комбинацию: git fetch & git merge. Вероятно, вы должны сделать следующее:

  1. git checkout master # переключиться на мастер-ветку на местном репо.
  2. git status # убедитесь, что вы чистые
  3. git pull # получить последние коммиты из удаленного репо
  4. git checkout <your-branch> # переключиться обратно на боковую ветвь
  5. git merge master # сливаться мастер совершает в вашу ветвь
  6. необязательно: git push origin <your-branch> # для резервного копирования ваших коммитов/обновлений в удаленном репо