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

如何构造git rebase时相同冲突反复出现的最小示例?

Git rebase 重复冲突最小复现方案

你的猜测正确,该场景的核心触发条件是待rebase的功能分支包含未被目标基准分支合并的merge提交。git rebase默认会逐个重放merge关联的所有父提交,相同行的修改冲突会在不同提交重放时重复触发。

最小复现操作步骤

  • 初始化空git仓库
mkdir test-rebase-repro && cd test-rebase-repro && git init
  • 新建文件提交到master分支
echo "line1" > my-file && git add my-file && git commit -m "init master"
  • 切出dev分支,修改my-file同一行内容提交
git checkout -b dev
echo "line1 dev修改" > my-file && git commit -am "dev: modify my-file"
  • 切回master分支,也修改my-file同一行内容提交,制造和dev分支的冲突
git checkout master
echo "line1 master修改" > my-file && git commit -am "master: modify my-file"
  • 切回dev分支,合并master,手动解决冲突后提交生成merge节点
git checkout dev
git merge master

此时触发冲突,手动将my-file内容改为自定义合并结果,比如line1 合并后内容,执行提交:

git add my-file && git commit -m "dev: merge master"
  • 在dev分支的merge节点后新增一个提交(只要保证dev在merge后有新提交即可)
echo "line2" >> my-file && git commit -am "dev: add line2"
  • 执行rebase操作触发重复冲突
git rebase master

此时第一次冲突出现,冲突内容和之前merge时完全一致,手动解决冲突后执行:

git add my-file && git rebase --continue

接下来会立即弹出第二次完全相同的冲突,完成复现。

单次解决冲突的方案

如果不需要保留功能分支的merge提交结构,执行rebase时添加--rebase-merges参数即可,仅需要解决一次冲突:

git rebase --rebase-merges master

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 17:57:00