当Git合并报告文件没有被删除时

时间:2013-08-02 11:58:27

标签: git

我有一个主分支和一个功能分支。两者都包含Bar.cs文件。但是,当我尝试将功能合并到主服务器时,它会报告在功能分支上删除了文件Bar.cs。但Bar.cs从未在功能上删除,正如我所说,这两个文件都存在于两个分支上。

master上Bar.cs文件的git日志返回以下内容:

commit daaf6bd6c8d2a38b839fae44234ceef2a0c9e188
Author: xxxx
Date:   Fri Jun 28 10:17:18 2013 +0000

    Renamed Foo.cs to Bar.cs

Bar.cs on feature文件的git日志返回以下内容:

commit 93dea9f7a2b9474c169bf8a49c5a721572a9d369
Author: xxxx
Date:   Fri Jul 5 16:14:46 2013 +0000

    Another change

commit de9fbe3ae13ccdac8a540c653af10abb1a2f1006
Author: xxxx
Date:   Tue Jul 2 16:03:43 2013 +0000

    Renamed Foo.cs to Bar.cs

正如您所看到的,在功能中我在7月2日合并了来自master的更改,然后在6月28日对该文件进行了另一次更改。

当我尝试合并时,git说:

CONFLICT (rename/delete): Bar.cs deleted in feature and renamed in HEAD. Version HEAD of Bar.cs left in tree.

知道发生了什么事吗?

2 个答案:

答案 0 :(得分:3)

在使用git-svn工具从SVN存储库同步的两个分支合并期间遇到同样的问题。

某些文件已在master分支上重命名,feature分支上的已更新,但git在{{1}上将这些文件检测为已删除方:

feature

解决方案是将合并策略更改为CONFLICT (rename/delete): Classes/A.m deleted in feature and renamed in HEAD. Version HEAD of Classes/A.m left in tree. 而不是默认resolve

recursive

答案 1 :(得分:0)

由于有问题的提交似乎完全相同,您可以尝试以交互方式重新定位feature on master

git checkout feature
git rebase -i master

将弹出一个编辑器,让您选择要提交的提交。删除提交de9fbe的行。然后,这将重新应用除feature中的重命名之外的所有提交。

之后,可以使用

进行合并
git checkout master
git merge --no-ff feature