如何调整Git提交顺序:将提交B移至合并提交m之后?
调整Git提交顺序:将提交B移至合并提交之后
你的需求是把提交B从合并提交m之前移到之后,由于涉及合并提交,普通交互式rebase会因Git自动展平合并历史导致选取过多提交,推荐用以下分步操作:
操作步骤
- 切换到目标分支并创建临时分支保存最后一个提交D(避免后续操作丢失):
git checkout branch_1 git branch temp D - 将
branch_1重置到提交A的位置(确保后续重新合并分支2):# 替换<A的哈希值>为实际提交A的Git哈希,或用相对位置如HEAD~4(需确认准确性) git reset --hard <A的哈希值> - 重新合并
branch_2,生成新的合并提交m':git merge branch_2 - 把原来的提交B Cherry-pick 到当前分支,生成B':
git cherry-pick <B的哈希值> - 再把临时分支上的提交D Cherry-pick 过来,生成D':
git cherry-pick temp - 确认历史符合预期后,删除临时分支:
git branch -D temp
注意事项
- 操作前建议备份原分支:
git branch branch_1_backup,防止操作失误导致历史丢失。 - 所有提交哈希可通过
git log --oneline查看,复制对应提交的短哈希即可。
内容的提问来源于stack exchange,提问作者Edward Surov
相关产品推荐
相关产品推荐

