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

如何筛选双根Git仓库中仅源自某一根的提交?

Git多根仓库的历史重写方案

现有一个包含两个根节点的Git仓库,提交结构如下:

A--C--D (HEAD)
  /
 B

执行命令:

git filter-branch --commit-filter 'git commit-tree -S "$@";' -- B..D

后,意外重写了提交A的完整历史。实际需求是仅重写git log --ancestry-path=B D返回的提交,同时保留C的合并结构,期望得到的提交结构为:

A--C'--D'
  /
B'

更新说明

更新1
将日志命令从git log --ancestry-path B..D调整为包含根提交B的形式。

更新2
C^..D可通过排除C的最左侧父节点实现需求,同时--ancestry-path参数同样适用——多数被git log(传递给git rev-list)支持的参数均有效。因此,重写从B到D的提交最直接的命令为:

git filter-branch \
  --commit-filter 'git commit-tree -S "$@";' \
  -- --ancestry-path=B D

附:此前更新中的ancestry-path示例曾将B和D的顺序写反。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 15:12:05