Отменить git merge несколько коммитов назад - PullRequest
2 голосов
/ 13 декабря 2011

У меня есть ветвь функций, давайте назовем ее «myfeature», над которой я работал. Клиент захотел, чтобы я поместил его на тестовый сайт, поэтому я слил его в «промежуточную» ветку и подтолкнул к исходной точке. С тех пор я сделал несколько коммитов на "промежуточной" ветке. Сегодня клиент решает, что ему больше не нужна «моя особенность».

Как я могу отменить слияние, которое я сделал несколько коммитов назад? У меня все еще есть ветвь "myfeature". Я в основном хочу взять все изменения, которые есть в этой ветви, вытащить их из «промежуточной» ветви и сохранить «newfeature» в другой раз.

Ответы [ 3 ]

3 голосов
/ 13 декабря 2011

Вы можете использовать git revert, чтобы отменить слияние, но вы должны указать (через опцию -m) родительский номер коммита слияния, к которому вы хотите вернуться.Допустим, у вас есть такая история:

c1--c2----------c5--c6--c7
     \--c3--c4--/

Коммит слияния - c5.Вы можете отменить слияние:* здесь .

0 голосов
/ 13 декабря 2011

Разве вы не можете просто отменить коммит слияния?

git revert <SHA1-OF-MERGE-COMMIT>

0 голосов
/ 13 декабря 2011

Это процесс, который мы используем:

https://plus.google.com/109096274754593704906/posts/R4qkeyRadLR

Это очень хорошо работает именно для этого сценария. Вы можете очень легко восстановить, когда функция больше не нужна. Ключ заключается в том, чтобы не «раскрыть» функцию; вам нужно объединить все остальные функции и опустить ту, которая вам больше не нужна. Книга непрерывной доставки из серии Мартина Фаулера оказывает огромную медвежью услугу, рассматривая очень старый способ выполнения ветвлений для каждой функции. Раздел «расширенный контроль версий» не очень хорош, так как он танцует вокруг этих проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...