Отменить слияние Git, но сохранить более поздние изменения и переписать историю

У меня есть несколько веток, каждая с разными функциями. Обычно у меня есть дополнительная ветка not_master, которая содержит мастер + функцию А, например:

(not_master)     a--b--c--d--e---M--x--y--z
(feature A)           --h--i--j-/

Иногда я хочу отключите функцию A, но сохраните коммиты x, y, z в "not_master".

Другими словами, мне бы хотелось следующее:

(not_master)     a--b--c--d--e--x--y--z

Я вижу, что могу выполнить git revert -m 1 M , который добавит в конец фиксацию, которая отменяет мои изменения, но я действительно не хочу этого делать, поскольку эти коммиты еще не были опубликованы, поэтому добавление дополнительных коммитов делает историю еще труднее читать .

Другие предлагают просто выполнить git reset --hard M , но при этом будут сброшены изменения x, y, z . Я просто думаю об этом совершенно неправильно путь? Мне просто git reset --hard M и вишня выбрать x, y, z?

8
задан random 14 October 2014 в 03:48
поделиться