Ответ 1
Да:
git checkout -b mergebranch B
git cherry-pick D
Я хочу сделать что-то похожее на git rebase, но не сворачивая параллельные коммиты.
Скажем, у меня есть следующие коммиты:
B (bar)
/
A-C-D (foo)
Теперь я хочу принять изменения, введенные D в C в ветки foo, и применить их к B в строке ветвления. так что я получаю следующее:
B-E (bar)
/
A-C-D (foo)
Если разница между коммитами B и E равна разности между коммитами C и D. Возможно ли это? Есть ли способ сделать это без создания патча?
Да:
git checkout -b mergebranch B
git cherry-pick D
Если последнее фиксация на ветке, которую вы хотите вычеркнуть из (foo в примере), является фиксацией слияния, вы можете указать конкретную фиксацию на вишневый выбор, используя git cherry-pick branchname~1
, чтобы получить фиксацию, которая был родителем слияния.
В моем случае мне нужно было применить изменения конкретных коммитов другой ветки. Я сделал это, выбрав вишню так: git cherry pick COMMIT-HASH
.