这与Git 1.6.5(2009年10月)和提交4d4d572有关,该提交引入了更详细的消息:
status
:分别显示冲突路径的工作树状态
当索引中的路径未合并时,我们过去常常会在“已更改但未更新”部分中说“未合并”,即使路径在工作树中被删除。
从“已更新”部分中删除未合并条目,并创建一个名为“未合并路径”的新部分。 在此新部分中更详细地描述不同阶段的冲突。
正如您可以在此补丁中看到的那样,“同时修改”(在两个父级中)并不是唯一的冲突情况。
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;
在提交 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中,具有合并冲突的索引通常具有三个版本(请参见“如何强制Git认为文件未合并?”)。
在Git中,具有合并冲突的文件通常在索引中有三个版本,并且在工作区中有一个带有diff3 -E
/ rcsmerge
冲突标记的版本。
- 索引中的版本分别是:共同祖先的第一阶段,"我们"版本的第二阶段和"他们"版本的第三阶段。
对于未合并的文件,没有第0阶段的版本。
在这里,“both modified”表示“在‘我们’和‘他们’中都被修改”。