В моем случае я объединил свою ветку (скажем: my-branch) с другой функциональной веткой (feature-branch), но не с master. Итак, история моей ветки была такой:
my-branch (before merge)
---master----m1----m2----m3---m4
После слияния его с другим, у feature-branch
которого были коммиты f1, f2
поверх мастера, он стал таким:
my-branch (after merge)
---master----m1----m2----f1----f2----m3---m4----mergecommit
Это могло произойти из-за того, что во время работы над моей веткой я выполнил слияние из master после 2 коммитов, или одна из 2 веток могла быть не в актуальном состоянии с master. Таким образом, в этом случае git revert -m 1
он не работал, так как он оставил их f1
и f2
зафиксировал между ними.
Решение было простым, и оно будет работать в обычных сценариях, когда у нас нет промежуточных коммитов:
git rebase -i HEAD~6
Вместо 6 используйте соответствующее число в зависимости от того, сколько прошлых коммитов вы хотите изменить. Теперь редактор Vim открыт, просто отметьте нежелательные коммиты такими drop
же и выйдите, используя :wq
журнал проверки:
git log --oneline
принудительный толчок
git push -f
Теперь удаленная ветка должна быть в предыдущем состоянии.