Git: Ваша ветка и "источник/мастер" расходятся - как отбросить локальные коммиты?

У меня есть следующее сообщение в git:

# Your branch and 'origin/master' have diverged,
# and have 3 and 8 different commits each, respectively.
#   (use "git pull" to merge the remote branch into yours)

Я хотел бы выбросить 3 локальных коммита и вытащить 8 удаленных коммитов в origin/master.

(Слияние будет слишком сложным, я предпочел бы сделать 3 локальных фиксации снова, если мастер обновлен.)

Как я могу это сделать?

Ответы

Ответ 1

git fetch origin
git reset --hard origin/master

Ответ 2

Чтобы сохранить ваши старые фиксации на временной ветке, если они вам понадобятся:

git branch temp

Затем переключитесь на новый мастер

git fetch origin
git reset --hard origin/master

Ответ 3

Попробуйте сделать это, чтобы снести ваши локальные коммиты:

git reset --hard HEAD~4

Ответ 4

В качестве альтернативы слиянию вы можете переустановить ветвь функции на главную ветку, используя следующие команды:

git checkout feature
git rebase master

Ответ 5

Если жесткий reset не режет его для вас, и вы не хотите делать слияние, вы можете выбросить свои локальные нежелательные изменения, удалив локальную ветвь и повторно загрузив исходный код:

git branch -D <local branch>
git checkout -b <branch name> origin/<branch name>

Используя master в качестве примера:

git branch -D master
git checkout -b master origin/master

Ответ 6

Чтобы удалить свой последний локальный коммит, используйте следующее:

git reset HEAD^

Это вернет заголовок в состояние, предшествующее фиксации, и позволит вам git pull от master. Убедитесь, что вы сохранили все свои изменения в другом месте (локально) перед извлечением из удаленного репозитория.

Чтобы иметь возможность тянуть без конфликтов, используйте git stash, а затем git pull.