2012-03-13 6 views
6

Я объединил свою ветку в мастерскую и толкнул, думая, что все в порядке. Оказывается, у кода есть проблемы, и мне бы хотелось, чтобы он возвращал либо фиксацию слияния, либо всю ветвь, в зависимости от того, что более уместно, так что другие могут легко продолжать работать, как будто мое слияние никогда не происходило.Возвращение плохой ветви слияния

Затем я намерен исправить свою ветку и снова объединить ее. Чтение man git-revert предполагает, что я смогу повторно слить, если я использую -m для возврата всей ветви.

ответ

6

Просто сбросить ГОЛОВА к предыдущей фиксации:

git reset --hard HEAD^ 

Вы не заявить в своем вопросе, если вы толкнул неисправное слияние или нет, поэтому должен отталкиваться --force, если это так (так как вы переписали историю на главной ветке).

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

git revert HEAD 

Однако, это создаст новый коммит, который делает противоположное фиксации, что голова указывает на прямо сейчас, и будет заражать хранилище. Сброс лучше в этом смысле, так как вы избавляетесь от двух коммитов, один из которых неисправен, а другой - для компенсации неисправности.

+0

Извините, должен был упомянуть, что я уже нажал. Что именно вернет HEAD? Создайте фиксацию «un-merge», чтобы в HEAD моя ветка выглядела так, будто она не была совершена, хотя история покажет иначе? – Letharion

+0

Точно. История покажет ваш ошибочный фиксатор слияния и поверх этой другой фиксации, которая отрицает ошибку. Просто попробуйте, вы всегда можете отменить его с помощью «git reset --hard HEAD ^»;) – ralphtheninja

Смежные вопросы