Подтвердить что ты не робот

Отменить слияние после нажатия

Выполненные шаги:

У меня есть две ветки branch1 и branch2,

$git branch --Initial state
$branch1

$git checkout branch2
$git pull origin branch1 --Step1

Я разрешаю конфликты и делал

$git commit -m "Merge resolved"

то

$git checkout branch1
$git merge branch2
$git push origin branch1

Теперь я понял, что, находясь на шаге 1, автоматическое слияние удалило какой-то код и код изменения был нажат, теперь я хочу вернуться в свое первоначальное состояние, чтобы отменить любые изменения. Заглядывая для немедленной помощи?

4b9b3361

Ответ 1

Вы можете вернуть слияние, следуя официальному руководству, однако это оставляет Git ошибочное убеждение, что объединенные коммиты по-прежнему находятся на целевой ветки.

В основном вы должны:

git revert -m 1 (Commit id of the merge commit)

Ответ 2

Попробуйте использовать git reflog <branch> чтобы узнать, где была ваша ветка до слияния и git reset --hard <commit number> чтобы восстановить старую ревизию.

Reflog покажет вам более старые состояния ветки, поэтому вы можете вернуть их в любой набор изменений, который вам нравится.

Убедитесь, что вы находитесь в правильной ветке, когда вы используете сброс git

Чтобы изменить историю удаленных репозиториев, вы можете сделать git push -f, однако это не рекомендуется, потому что кто-то может alredy загрузить загруженные вами изменения.

Ответ 3

Первый вариант - использование git revert.

git revert -m 1 [sha-commit-before-merge]

git revert вернет изменения, но сохранит историю. Поэтому вы не сможете продолжить работу в том же филиале, потому что больше не видите фактической разницы между объединенной веткой и филиалом. Используйте следующий способ удаления истории. Делайте это очень осторожно, если и только в том случае, если вы единственный, кто нажимает изменения на ветку на данный момент.

git reset --hard [sha-commit-before-merge]
git push [origin] [branch] --force