Git并行分支存相同变更不同哈希,如何调整分支结构?
解决Git重复提交分支的合并问题
当前仓库结构
A1 - B1 - C1 - D1 - E1 \ \ C2 - D2 - F2
其中:
- C1与C2、D1与D2的文件变更完全一致(
git diff C1 C2返回空),但提交哈希和提交信息不同 - E1与F2的变更完全独立
目标结构
A1 - B1 - C1 - D1 - E1 \ \ F2
解决方案
针对大量重复提交的场景,无需手动计数重复提交数量,可通过以下命令自动跳过无变更的重复提交,将F2直接迁移到D1之后:
切换到包含F2的分支(假设分支名为
topic,替换为实际分支名):git checkout topic执行带自动跳过空提交的变基命令:
git rebase --onto D1 B1 --skip-empty
命令解释
--onto D1:指定将分支重新基于D1提交B1:指定从B1之后的提交开始处理(即C2、D2、F2)--skip-empty:自动跳过那些应用后未产生任何文件变更的提交(也就是C2和D2,因为它们的变更已经存在于D1所在的主链中)
执行完成后,仓库结构会自动调整为目标样式,C2、D2这类重复提交会被丢弃。
内容的提问来源于stack exchange,提问作者Amedee Van Gasse
相关产品推荐
相关产品推荐

