19

假设我有一个文件

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

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

CONFLICT(修改/删除):X 在 HEAD 中删除并在 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 
4

1 回答 1

32

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

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

于 2012-06-20T08:10:28.890 回答