为什么git不会尝试将更改合并到重命名的文件?

Ale*_*x B 18 git merge

假设我有一个文件

  1. 在master中修改
  2. 在功能分支中修改
  3. 在功能分支中重命名

当我尝试从master合并到功能分支时,合并失败

CONFLICT(修改/删除):在HEAD中删除X并在origin/master中修改.X的版本原点/主人在树中留下.

我知道存在冲突,但为什么不尝试合并更改并将冲突标记放在文件中?以前的答案似乎暗示它应该.我得到的是该文件的两个不同版本,我必须手动找出差异,并从主版本到我的版本逐行更改端口.

重现步骤:

git init
touch a
git add a
git commit -m 'initial import'

git checkout -b feature1
echo feature1 > a
git add a
git commit -m feature1
git mv a b
git commit -m feature1

git checkout master
echo bugfix > a
git add a
git commit -m bugfix

git checkout feature1 
git merge master 
Run Code Online (Sandbox Code Playgroud)

ake*_*ent 31

因为在git中实际上没有第一类重命名操作的概念,所以它只是使用文件差异的阈值"检测"重命名.你的文件可能太不一样了.

尝试合并: git merge master -s recursive -X rename-threshold=5%