Git 如何在现有提交结构中添加main指向dev的直接提交连接?
答案
可以实现,你需要的效果本质是让提交c同时拥有提交a和提交b两个父提交,操作步骤如下:
前置准备
- 执行
git log --oneline记录三个提交的哈希值,记提交a的哈希为HASH_A、提交b为HASH_B、提交c为HASH_C - 提前备份dev分支,避免操作失误丢失代码:
git branch dev_backup dev
操作步骤
- 生成新的提交c,完全保留原有c的文件内容和提交信息,同时指定两个父提交为a和b:
git commit-tree HASH_C^{tree} -p HASH_A -p HASH_B -m "$(git log -1 --format=%B HASH_C)"
命令执行完成后,终端会输出新生成提交的哈希值,记为NEW_HASH_C。
2. 将dev分支指向新生成的提交:
git checkout dev git reset --hard NEW_HASH_C
验证与注意事项
- 操作完成后执行
git log --graph --oneline --all即可看到你需要的提交结构。 - 该操作会修改dev分支的提交历史,如果dev已经推送至远程仓库,需要执行
git push -f origin dev强制推送。 - 如果有其他协作者共同使用dev分支,需要通知他们同步远端的dev分支,避免产生额外的合并冲突。
内容的提问来源于stack exchange,提问作者Wilan
相关产品推荐
相关产品推荐

