如何确定哪个父级是Git中合并提交的第一个父级

如何确定哪个父级是Git中合并提交的第一个父级,git,git-merge,git-commit,Git,Git Merge,Git Commit,我在阅读git中使用~操作符与^操作符的区别时,遇到了这个问题 谷歌搜索后,我无法找到一个很好的解释,那就是git如何区分合并提交的第一个父级和第二个父级 有经验法则吗 例如,将功能分支合并到开发分支中,创建合并提交G develop feature/foo A D | | B E | | C F \ / G <- develop(HEAD) 开发功能/foo D | | B E |

我在阅读git中使用
~
操作符与
^
操作符的区别时,遇到了这个问题

谷歌搜索后,我无法找到一个很好的解释,那就是git如何区分合并提交的第一个父级和第二个父级

有经验法则吗

例如,将
功能
分支合并到
开发
分支中,创建合并提交
G

develop feature/foo
     A   D
     |   |
     B   E
     |   |
     C   F
      \ /
       G <- develop(HEAD)
开发功能/foo
D
|   |
B E
|   |
碳纤维
\ /

因此,不存在提交的父级。但是,您可以根据运行
git合并的分支来确定哪一个是父级

是否类似于在其上进行合并提交的分支决定了 第一父母

请参考Pro Git的版本:

您还可以在“^”后面指定一个数字,以标识您选择的父项 希望例如,d921970^2表示“d921970的第二个父级” 此语法仅适用于合并提交,它具有多个 父母亲 — 合并提交的第一个父级来自您所指定的分支 合并时处于启用状态(通常为主),而第二个父级 合并提交的分支来自合并的分支(例如,主题):


而像
git show G^1
git show G^2
git log-1--pretty=%p G
,和
git rev parse G^
这样的命令可以证明它与所描述的相同。此外,使用git cat file-p G
检查提交对象的内容,我们可以看到父对象按顺序记录。

第一个父对象通常是执行合并的分支的
提交。


git commit
使用
HEAD
commit作为第一个父级(如果没有冲突,
git merge
将为您执行提交,否则您自己执行。两种方式的结果相同)。所有便利命令都遵循此约定。您可以使用
git commit tree
自己构建任意提交,并出于任何原因指定您喜欢的任何父级。

我想首先是您合并到的父级。它不在文档中,我们必须检查源代码。每个提交至少有一个父级。合并提交有2个或更多。感谢提供信息。