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

时间:2012-06-20 06:01:36

标签: git merge

假设我有一个文件

  1. 在主人中修改
  2. 在功能分支中修改
  3. 在功能分支中重命名
  4. 当我尝试从master合并到功能分支时,合并失败并带有

      

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

    我知道存在冲突,但为什么不尝试合并更改并在文件中放置冲突标记? Previous answers seem to imply that it should.我得到的是该文件的两个不同版本,我必须手动找出差异,并从主版本到我的版本逐行更改端口。

    重现的步骤:

    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 
    

1 个答案:

答案 0 :(得分:31)

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

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