Отменить мерзавец слияния
У меня такая ситуация: я некоторое время работал над некоторым 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>