如何创建镜像分歧分支状态的commit?复制commit至目标分支
解决方案
我来帮你搞定这个需求!要把commit F的完整代码状态复制到branch1的D后面,同时保留原branch2的历史不动,完全不用改写公开历史,步骤很简单:
先切换到branch1,确保你当前就在commit D的位置:
git checkout branch1 # 怕搞错的话可以用这个命令确认当前的提交记录,看最上面的是不是D git log --oneline接下来,把branch2(也就是commit F对应的完整代码状态)直接覆盖到当前工作区和暂存区——这样会把C和D带来的变更全部丢弃,让你的工作区完全和F一模一样:
git checkout branch2 -- .最后,创建新的commit F'就好了,还能直接复用F原来的提交信息,省得重新写:
git commit -C branch2
做完这几步,branch1的历史就变成A--B--C--D--F'了,而branch2还是好好的E--F,原commit F一点没动,完全符合你的要求。
顺便解释下关键命令:
git checkout branch2 -- .就是把branch2指向的那个提交(也就是F)里的所有文件,替换掉当前分支下的对应文件,直接同步成F的完整状态。git commit -C branch2会直接用F的提交信息(包括作者、提交时间这些)来生成新commit,但这是个全新的commit对象,和原F完全独立,不会碰原分支的历史。
内容的提问来源于stack exchange,提问作者Marc-François
相关产品推荐
相关产品推荐

