Работая над неполной веткой feature
, я уже зафиксировал Fix
для master
.
(master) A-B-C
(feature) \_D-E-Fix-G-H
Как мне получить коммит Fix
на master
, ...
(master) A-B-C------Fix'
(feature) \_D-E-Fix-G-H
... но все еще можно слить / перебазировать мою ветку feature
на master
?
(master) A-B-C-D-E-Fix-G-H
Я полагаю, что Fix'
должен поддерживать тот же SHA, что и Fix
, чтобы не было видно совершенно другого коммита и плавно объединять / перебазировать (так что cherry-pick
, который я обычно использую, здесь не помогает).
Так что, возможно, это невозможно, но мне любопытно, есть ли способ поделиться некоторыми временными исправлениями из ветки с другой веткой и все же иметь возможность позже объединить остальные недостающие коммиты.
Моя ветка feature
просто локальная. Естественно, я не хочу переписывать историю.
Если фиксация Fix
выбирается вишенкой, то она не зависит от D
и E
, поэтому вы можете git rebase -i C
и переупорядочить свою историю, чтобы Fix
находился позади D
.
Тогда было бы легко объединить ветку функций обратно в master.
(master) A-B-C--Fix'
(feature) \_Fix-D-E-G-H
Вы упомянули, что хотели избежать переписывания истории, но если вы согласны с выбором одной фиксации исправления, я думаю, что переупорядочение ветки функций, чтобы упростить ее слияние, должно быть приемлемым.
Не то, чтобы я знал, если вы держали D
и E
между C
и Fix
, но также имели Fix'
в master
, тогда слияние должно создать коммит слияния I
с двумя родителями и двумя очевидными копиями Fix
. Мне не нравятся коммиты слияния больше, чем редактирование истории, поэтому я обычно выбираю последние.
Обычно я уже
cherry-pick
, чтобы быстро решить эту проблему. Затем при слиянии / перебазировании он уже будет видеть код исправления, поэтому он просто ничего не будет делать. И это неплохо. Меня больше интересовало сохранение той же фиксации, которая является общей для веток, без необходимости дублировать ее вFix'
(Возможно ли поместитьD
иE
междуC
иFix
, позже, после того, какFix
был помещен послеC
вmaster
? - это не единственное требование, чтобы не переписывать историю, чтоFix
,D
иE
сохраняют то же самое. предки?)