Отменить мерзавец слияния

У меня такая ситуация: я некоторое время работал над некоторым testBranch, и я хотел синхронизироваться с master, поэтому я сделал git checkout testBranch и git merge master/testBranch

Так что теперь моя ветвь синхронизируется с master, но потом я обнаружил, что хочу отменить это слияние, и проблема в том, что слияние выполняется с ускоренной перемоткой вперед, и теперь моя история коммитов смешивается с основными коммитами и коммитами testBranch, и я не знаю как вернуться к состоянию до слияния на моем testBranch.

Спасибо за любую помощь

2 ответа

git reflog show testBranch

должно отображать слияние ускоренной перемотки как последний элемент ({0}). Убедившись в этом, оформить заказ testBranch а потом просто сделай

git reset --keep testBranch@{1}

вернуться в предыдущее состояние.

Если вам известна ревизия, в которой вам нужен локальный testBranch, это так просто:

git checkout testBranch
git reset --hard <revision>

Если у вас есть изменения, смешанные как (самые старые сверху):

<point>
<your_change_a>
<change_from_someone_else>
<your_change_b>
<testBranch>

Вы могли бы:

git checkout testBranch
git reset --hard <point>
git cherry-pick <your_change_a>
git cherry-pick <your_change_b>
Другие вопросы по тегам