Ответ 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.