Ветвь save_feature_2
должна содержать revert commit и дополнительно revert of revert commit .
Когда вы объедините эту ветку обратно в master
, вы снова активируете функцию.
Более конкретно:
- Изначально у вас есть ветвь
master
с коммитом FEATURE
(FEATURE
- это хэш компонента коммит).
- Вы хотите вернуть
FEATURE
и создать REVERT_OF_FEATURE
в master
ветви (это хеш коммита, сгенерированного git revert FEATURE
)
- Вы создаете ветку с именем
FEATURE_BRANCH
или что-то еще. (git co -b FEATURE_BRANCH
) и в этой новой ветке вы отменяете отменить коммит (git revert REVERT_OF_FEATURE
)
- Вы продолжаете работать на
master
(там эта функция сейчас отсутствует) и на FEATURE_BRANCH
(Здесь эта функция снова присутствует, и вы можете продолжить работу над ней)
- Наконец, вы объединяете
FEATURE_BRANCH
обратно в master
, и вы получаете оригинальную функцию и дополнительные изменения в master
.
Проблема, с которой вы столкнулись, заключается в том, что при слиянии ветви save_feature_2
обратно в master происходит то, что изменения всех коммитов, которые находятся в save_feature_2
ветви и не уже содержатся в целевой ветви ( master
) принимаются. Но исходный коммит feature
уже был там, поэтому эти изменения не включены. Но если вы включите возвратный коммит и возвратный возврат в эту функциональную ветвь , вы достигнете желаемого.
Если вы хотите исправить свою текущую ситуацию такой, какая она есть, вы можете просто объединить master
в FEATURE_BRANCH
(вы получите коммит REVERT_OF_FEATURE
там) и затем вернуть туда REVERT_OF_FEATURE
коммит.
Тем не менее, я нахожу флаги функций хорошей вещью, как @crashmstr уже упоминалось в комментариях.