如何将commit C'''移至C'之上且无需合并与父提交B的差异?
将提交C'''直接变基到C'之上的方法
当前仓库的提交结构如下:
A <-- B <-- C'(v1) ⇡__ C'''(main)
要实现把C'''直接移到C'提交之后(完全保留C'''的内容,无需处理它和C'相对于共同父提交B的差异),可以用Git的rebase --onto命令完成,具体步骤如下:
切换到
main分支:git checkout main执行定向变基命令:
git rebase --onto C' B或者更明确指定目标提交:
git rebase --onto C' B C'''这个命令的作用逻辑:
--onto C':指定把目标提交挂载到C'的提交链之后B:表示忽略从B到C'''原父提交之间的所有历史,只提取C'''这一个提交- 最终会直接把
C'''放到C'的末尾,完全保留其提交内容,不会触发和C'的差异合并操作。
若执行中出现冲突(按需求理论不会,但如果出现),直接采用
C'''的内容覆盖即可:git checkout --theirs . git add . git rebase --continue
执行完成后,仓库提交结构会变为:
A <-- B <-- C' <-- C'''(main) (v1)
内容的提问来源于stack exchange,提问作者Mohamad Bakhtiari
相关产品推荐
相关产品推荐

