Объединение локальной ведущей ветки с удаленной главной ветвью в Git

Я в странной ситуации: я скопировал каталог (локальный репозиторий) от бывшего разработчика на мою машину. Было несколько коммитов для удаленного мастера, которые НЕ находятся в его локальном репозитории.

Как объединить локальную копию мастера с самыми последними изменениями удаленного мастера?

Ответы

Ответ 1

Случай 1: remote/master имеет все, что имеет локальный мастер

Если remote/master содержит все коммиты, которые содержит локальный master, просто выполните git pull:

git checkout master
git pull remote master

Вы можете проверить, не выполнил ли локальный master, что remote/master нет, используя следующее:

git fetch remote
git log --oneline --graph remote/master..master

Это покажет вам все коммиты, которые содержатся в master, но не в remote/master. Если вы не видите какой-либо вывод, это означает, что remote/master имеет все, что есть у локального master.

Случай 2: локальный мастер зафиксировал, что у удаленного/ведущего нет

Если локальный master содержит commit, что remote/master не содержит, вам нужно будет выяснить, как вы хотите это обработать. Вы хотите сохранить их и объединить с помощью remote/master, или просто хотите их выбросить?

Случай 2a: слияние/переадресация локального мастера фиксируется на удаленный/основной

Если вы хотите сохранить их, вы можете merge или rebase локальный master с помощью remote/master:

git checkout master
git fetch <remote>

# Merge remote/master
git merge remote/master

# Or rebase local commits on top instead
git rebase remote/master

# Push the results
git push remote master

Случай 2b: выбросить локальные капитальные коммиты

Если вы не хотите сохранять локальные коммиты, тогда просто создайте жесткий reset локального master в той же точке, что и remote/master:

git checkout master
git fetch remote
git reset --hard remote/master

Документация

Подробнее о всех этих командах вы можете прочитать в документации Git. Я также рекомендую отличную бесплатную онлайн-книгу Pro Git, особенно главы 1-3 и 6-6.5.