当尝试在git中合并时文件发生冲突时,git在有这样冲突的文件上说both modified
:
$ git status
On branch master
You have unmerged paths.
(fix conflicts and run "git commit")
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: file1
no changes added to commit (use "git add" and/or "git commit -a")
不确定为什么&#34; 两者已修改&#34;。你们有谁知道吗?
答案 0 :(得分:18)
这回到Git 1.6.5(2009年10月)和commit 4d4d572,它引入了这个更详细的信息:
status
:分别显示冲突路径的工作树状态当路径在索引中取消合并时,我们过去常常在&#34;已更改但未更新&#34;中更改说&#34;未合并&#34; 部分,即使在工作树中删除了路径。
从&#34;更新&#34>中删除未合并的条目部分,创建一个新的部分&#34;未合并的路径&#34;。在这个新的部分中描述不同阶段如何更详细地冲突。
正如你在这个补丁中看到的那样,&#34;两者都被修改了#34; (在父母双方中)不是唯一的冲突案例。
case 1: how = "both deleted:"; break;
case 2: how = "added by us:"; break;
case 3: how = "deleted by them:"; break;
case 4: how = "added by them:"; break;
case 5: how = "deleted by us:"; break;
case 6: how = "both added:"; break;
case 7: how = "both modified:"; break;
您在commit 173e6c8中看到更多案例,git status -s
:
对于未合并的条目,
- 的状态
X
显示阶段#2(即ours
)和Y
显示阶段#3的状态(即theirs
)。
X Y Meaning
-------------------------------------------------
D D unmerged, both deleted
A U unmerged, added by us
U D unmerged, deleted by them
U A unmerged, added by them
D U unmerged, deleted by us
A A unmerged, both added
U U unmerged, both modified
这表明git中的索引具有 3个阶段(参见&#34; How do I force git to think a file is unmerged?&#34;)
在Git文件中,合并冲突(通常)索引中有三个版本,工作区中的版本包含
diff3 -E
/rcsmerge
冲突标记。
- 索引中的版本是共同祖先的第1阶段,
- 第二阶段为&#34;我们的&#34;版本和
- 第3阶段为&#34;他们的&#34;版。
对于未合并的文件,第0阶段没有版本
在这里,&#34;两者都经过修改&#34;在我们的&#39;中进行了修改。和他们的&#39;。