Git 合并子模块时的三个提交引用
我正在一个使用git子模块的项目中合并一个分支。通常当发生冲突时,会有两组变化,他们的和我们的。解决冲突就是将这两个问题合并为一个问题。但我注意到,对于git子模块,diff显示了第三个值:Git 合并子模块时的三个提交引用,git,git-merge,git-submodules,Git,Git Merge,Git Submodules,我正在一个使用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 dd7404e5f35ee0b0064
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
“-”和“+”是什么意思
请注意,合并之前在存储库中实际签出的子模块版本可能既不是他们的版本,也不是我们的版本,这可以解释三个散列吗?它只是意味着子模块(the)在源和目标中都发生了更改。
(见附件)
++
表示添加的一行未出现在branch1或branch2中
发件人:
您有三个SHA1,因为在冲突中,Git将所有这些版本存储在“stages”下的索引中,每个stages都有与之关联的数字
- 第一阶段是共同祖先
- 第二阶段是你的版本和
- 第3阶段是从
开始的,即您正在合并的版本(“他们的”)MERGE\u HEAD
是第二阶段又称“我们的版本”file1
是第3阶段,也称为“他们的版本”file2
N
中的-
字符表示该行出现在fileN
中,但不出现在结果中。列
N
中的+
字符表示该行出现在结果中,而fileN
没有该行”
就你而言:
- 第一列中的
表示-
,表示第二阶段,表示“我们的”版本李>file1
- 第二列中的A
表示-
,表示阶段3,表示“他们的”李>file2
- “
”表示不在++
或文件1
中的添加项(每次与第1阶段的共同祖先进行比较时)2
git diff files-c
(合并文件的组合差异)显示时,它将两个未解析的合并父级与工作树文件进行比较(即file1是stage 2 aka“我们的版本”,file2是stage 3 aka)“他们的版本”)。好的,但当git显示两个删除和一个添加时,它并没有说哪个删除版本来自哪个阶段的差异。它只显示“-”和“-”。它会一直将“-”与阶段1和阶段3之间的差异联系在一起(或者阶段1和阶段2之间)?@Amiramix是的,任何合并的输出都保持一致。