You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除已合并Git分支并保留提交日期,修改提交历史?

可以实现!保留提交日期的线性历史改造方案

你的需求完全可以通过Git的rebase命令实现,而且能保留所有原提交的作者日期(这通常就是你说的“不想修改提交日期”所指的内容——提交者日期会更新为操作时间,但作者日期会和原提交完全一致)。下面是具体操作步骤:

步骤1:调整B分支的提交基线到a3之后

原B分支的提交b1是基于a2的,我们需要把B分支的提交整体移到a3之后,生成b1'和b2':

# 先通过git log获取a3和a2的提交哈希(比如a3的哈希是<sha-a3>,a2是<sha-a2>)
git checkout B
git rebase --onto <sha-a3> <sha-a2>

执行完成后,B分支的历史会变成a3 → b1' → b2',且b1'和b2'的作者日期与原提交完全一致。

步骤2:把A分支的a5提交移到b2'之后

原A分支在合并提交a4之后是a5,我们需要跳过a4,把a5直接接到b2'后面:

# 获取a4的提交哈希<sha-a4>,切换到A分支
git checkout A
git rebase --onto B <sha-a4>

这一步完成后,A分支的历史就会变成你想要的线性结构:a1 → a2 → a3 → b1' → b2' → a5,所有原提交的作者日期都被完整保留。

关键注意事项

  1. 冲突处理:如果b1/b2和a3、a5存在代码冲突,Git会暂停rebase流程并提示你解决冲突。解决完冲突后执行git add <冲突文件>,再用git rebase --continue继续操作即可。
  2. 远程分支风险:如果A分支已经推送到远程仓库,重写历史后需要用git push --force强制推送。这会覆盖远程的历史记录,务必提前和团队成员沟通,确保大家同步操作,避免代码丢失或冲突。
  3. 结果验证:操作完成后,可以用git log --oneline --graph查看提交历史,确认是否符合预期的线性结构。

内容的提问来源于stack exchange,提问作者brandstifter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:01:26