Объединить локальную ветку 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.