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

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

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

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 содержит коммиты, которые remote/master не содержит, вам придется выяснить, как вы хотите справиться с этим. Вы хотите сохранить их и объединить с remote/master, или вы просто хотите их выбросить?

случай 2a: слияние / перебазирование локальных мастер-коммитов в remote / master

если вы хотите сохранить их, вы можете либо 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: выбросить локальные мастер-коммиты

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

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

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

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