Если вам нужно только объединить определенный каталог и оставить все остальное без изменений, но при этом сохранить историю, вы можете попробовать это ... создать новый target-branch
из master
перед началом эксперимента.
Следующие шаги предполагают, что у вас есть две ветви target-branch
и source-branch
, а каталог dir-to-merge
, который вы хотите объединить, находится в source-branch
. Также предположим, что у вас есть другие каталоги, такие как dir-to-retain
в цели, которые вы не хотите изменять и сохранить историю. Кроме того, предполагается, что есть конфликты слияния в dir-to-merge
.
git checkout target-branch
git merge --no-ff --no-commit -X theirs source-branch
# the option "-X theirs", will pick theirs when there is a conflict.
# the options "--no--ff --no-commit" prevent a commit after a merge, and give you an opportunity to fix other directories you want to retain, before you commit this merge.
# the above, would have messed up the other directories that you want to retain.
# so you need to reset them for every directory that you want to retain.
git reset HEAD dir-to-retain
# verify everything and commit.