Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.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_Libgit2_Pygit2 - Fatal编程技术网

Git提交父母';命令

Git提交父母';命令,git,libgit2,pygit2,Git,Libgit2,Pygit2,对于提交人父母的顺序有什么约定吗 因为提交的父级之一应该是要合并到的当前分支上的上一个提交,其余的是其他合并分支的上一个提交 我想确定当前分支的上一次提交,我正在使用它返回提交的父级列表,直觉上我认为父级顺序可能有意义,但我没有发现明确提到这一点 我编写了这个实用程序函数,使用第一个父提交遍历分支: def walk_branch(pygit_repository, branch_oid): """ Walk a single branch """ from p

对于提交人父母的顺序有什么约定吗

因为提交的父级之一应该是要合并到的当前分支上的上一个提交,其余的是其他合并分支的上一个提交

我想确定当前分支的上一次提交,我正在使用它返回提交的父级列表,直觉上我认为父级顺序可能有意义,但我没有发现明确提到这一点


我编写了这个实用程序函数,使用第一个父提交遍历分支:

def walk_branch(pygit_repository, branch_oid):
    """
    Walk a single branch
    """
    from pygit2 import GIT_SORT_TOPOLOGICAL
    previous_first_parent_oid = None
    for commit in pygit_repository.walk(branch_oid, GIT_SORT_TOPOLOGICAL):
        if previous_first_parent_oid is None or commit.oid == previous_first_parent_oid:
            previous_first_parent_oid = commit.parents[0].oid if len(commit.parents) else None
            yield commit

是的,如果将A合并到B中,第一个父对象是B,第二个父对象是A


因此,您可以执行类似于
gitk--first parent
的操作,只显示当前分支的历史记录,而不显示合并分支的详细信息。

libgit2
及其绑定按照父级在提交中的存储顺序返回父级,这是提交的顺序,例如,
git merge
的命令行中给出的,并且在创建新提交时(通过merge或normal
git commit
),第一个父级是当前提交是一个常量


为了识别上一次提交(及时),您需要做的就是查看第一个父级。无论它们是否在同一个分支中,您都无法从中看到,因为提交父级可能在不同的分支中(这就是导致分支的原因),但您可以画一条直线(就像那些
git log--graph--oneline
draws).

第一个父级之后的任何父级表示来自另一个分支的合并,至少有一个例外

如果您将一个分支合并到自身中,这通常发生在它分别在两个位置进行处理,然后再进行集成时,分支中的一个“分支”将显示为不知从何而来

如果遍历所有叶分支的所有父级,则会显示此选项,但如果遍历所有叶分支的线性历史,则不会显示分支中的此类分支。这至少仍然是正确的,因为您将只遍历合并到中的提交的线性历史记录。隐藏的是一个分支中有一个分支,因此它不会显示该分支独有的所有历史


我不知道删除分支是否具有相同的效果。

第一个父级与前一个当前分支并不总是您所期望的那样。请参阅

我不知道libgit2和pygit2,但“第一个”父级始终是您执行
git合并时所在分支的父级。这是一个
——第一个父项
提取,也是
git cat file-p somerev
原始输出中的第一个。剩下的家长是“合并自”的分支机构。谢谢,我不知道“第一家长”这个词。谢谢,请澄清。