当您想要重新分支保持合并提交的分支时,您将传递该--preserve-merges
标志.当你在git中合并不相关的历史时,你需要传递--allow-unrelated-histories
旗帜.
如果您git rebase --preserve-merges
在现有合并来自不相关的历史记录时正在执行,则会失败:
致命的:拒绝合并不相关的历史
如果您尝试git rebase --preserve-merges --allow-unrelated-histories
失败,则:
错误:未知选项'allow-unrelated-histories'
有没有其他方法告诉rebase允许合并?
编辑:这是一个最小的复制:https://github.com/vossad01/rebase-unrelated-merge-reproduction
要重现结帐,请master
执行:
git rebase --preserve-merges --onto origin/a-prime HEAD~2
Run Code Online (Sandbox Code Playgroud)
如果git rebase
合并失败,它不会中止rebase,因此您有机会进行手动干预.
如果您愿意手动解决此问题,可以按如下方式完成合并:
git merge --allow-unrelated ORIGINAL_BRANCH_THAT_WAS_MERGED --no-commit
git commit -C ORIGINAL_MERGE_COMMIT
git rebase --continue
Run Code Online (Sandbox Code Playgroud)
理想情况下,Git可以在没有人工干预的情况下处理此问题.
强制方法是强制一个共同的根 - 因为你试图改变根,没有内容历史,做一个nonce空提交并告诉git你正在合并的历史的父:
git rev-list --all --max-parents=0 \
| awk '{print $0,empty}' empty=`:|git mktree|xargs git commit-tree` \
> .git/info/grafts
git rebase here
rm .git/info/grafts
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5662 次 |
最近记录: |