Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 合并子模块时的三个提交引用_Git_Git Merge_Git Submodules - Fatal编程技术网

Git 合并子模块时的三个提交引用

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

我正在一个使用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
“-”和“+”是什么意思


请注意,合并之前在存储库中实际签出的子模块版本可能既不是他们的版本,也不是我们的版本,这可以解释三个散列吗?

它只是意味着子模块(the)在源和目标中都发生了更改。
(见附件)

++
表示添加的一行未出现在branch1或branch2中

发件人:

您有三个SHA1,因为在冲突中,Git将所有这些版本存储在“stages”下的索引中,每个stages都有与之关联的数字

  • 第一阶段是共同祖先
  • 第二阶段是你的版本和
  • 第3阶段是从
    MERGE\u HEAD
    开始的,即您正在合并的版本(“他们的”)
部分包含所有详细信息:

当显示为git diff files-c(合并文件的组合diff)时,它会将两个未解析的合并父级与工作树文件进行比较

  • file1
    是第二阶段又称“我们的版本”
  • file2
    是第3阶段,也称为“他们的版本”
N
中的
-
字符表示该行出现在
fileN
中,但不出现在结果中。
N
中的
+
字符表示该行出现在结果中,而
fileN
没有该行”

就你而言:

  • 第一列中的
    -
    表示
    file1
    ,表示第二阶段,表示“我们的”版本
  • 第二列中的A
    -
    表示
    file2
    ,表示阶段3,表示“他们的”
  • ++
    ”表示不在
    文件1
    2
    中的添加项(每次与第1阶段的共同祖先进行比较时)

它在来源上的改变是什么意思?和什么相比?局部变化?在这个特殊的示例中,SHA1是我们的,用“-”或“-”?@Amiramix与共同的祖先进行比较。@Amiramix请参阅:当通过
git diff files-c
(合并文件的组合差异)显示时,它将两个未解析的合并父级与工作树文件进行比较(即file1是stage 2 aka“我们的版本”,file2是stage 3 aka)“他们的版本”)。好的,但当git显示两个删除和一个添加时,它并没有说哪个删除版本来自哪个阶段的差异。它只显示“-”和“-”。它会一直将“-”与阶段1和阶段3之间的差异联系在一起(或者阶段1和阶段2之间)?@Amiramix是的,任何合并的输出都保持一致。