我正在合并使用git子模块的项目中的分支。通常在发生冲突时,有两组变更,即他们和我们的变更。解决冲突是将这两者合并为一体。但是我注意到对于git子模块,diff显示了第三个值:
diff --cc my_submodule
index dd7404e,e6753b1..0000000
--- a/my_submodule
+++ b/my_submodule
@@@ -1,1 -1,1 +1,1 @@@
- Subproject commit dd7404e5f35ee0b0064f0d6ed8201cc39d6ed6b2
-Subproject commit e6753b1142cf0350608720ff23f7ecf51b813cd9
++Subproject commit 3b4e75fbb7c55cf21e19509bbbbfabfa1fc10630
“ - ”,“ - ”和“++”是什么意思?
请注意,在合并之前,子模块版本可能实际上已在存储库中检出,这既不是他们的也不是我们的,这会解释三个哈希值吗?
答案 0 :(得分:1)
这只是意味着子模块 gitlink (special entry in the index of the parent repo)在源和目的地中都已更改 。
(见git diff
man page)
++
表示添加的一行未出现在branch1或branch2
来自Git Tools - Advanced Merging:
你有三个SHA1,因为在冲突中,Git将所有这些版本存储在“阶段”下的索引中,每个阶段都有与之关联的数字。
MERGE_HEAD
,您正在合并的版本(“他们的”)。combined diff format 部分包含所有详细信息:
当
git diff-files -c
(合并文件的组合差异)显示时,它将两个未解析的合并父项与工作树文件进行比较即。
file1
是第2阶段,也就是“我们的版本”,file2
是第3阶段,也就是“他们的版本”。
-
列中的N
字符表示该行显示在fileN
中,但未显示在结果中。
列+
中的N
字符表示该行显示在结果中,fileN
没有该行“。
在你的情况下:
-
表示file1
,表示第2阶段,表示“我们的”版本。 -
表示file2
,表示第3阶段,表示“他们的”。 ++
”表示不在file1
或2
的加法(每次与第1阶段的共同祖先比较时)