我有一个主分支和一个功能分支。两者都包含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.
知道发生了什么事吗?
答案 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