代码之家  ›  专栏  ›  技术社区  ›  Schwern

如何在git中找到下一个提交(儿童/参考儿童)

  •  190
  • Schwern  · 技术社区  · 15 年前

    ref^ ref . 得到承诺怎么样 之后 裁判 ?

    git checkout 12345 ,如何签出下一个提交?

    PS:是的,Git是一个 DAG 在这一次之后我如何找到提交?

    14 回复  |  直到 3 年前
        1
  •  2
  •   TamaMcGlinn    4 年前

    要列出所有提交,从当前提交开始,然后是其子提交,以此类推—基本上是标准的git日志,但时间上是相反的,请使用

    git log --reverse --ancestry-path 894e8b4e93d8f3^..master
    

    其中894e8b4e93d8f3是要显示的第一个提交。

        2
  •  1
  •   mik manojlds    4 年前

    创造者 Hudson (现在 Jenkins ), Kohsuke Kawaguchi kohsuke / git-children-of :

    给定一个提交,找到该提交的直接子级。

    #!/bin/bash -e
    # given a commit, find immediate children of that commit.
    for arg in "$@"; do
      for commit in $(git rev-parse $arg^0); do
        for child in $(git log --format='%H %P' --all | grep -F " $commit" | cut -f1 -d' '); do
          git describe $child
        done
      done
    done
    

    如图所示 this thread ,在基于 DAG (Directed Acyclic Graph)

            C1 -> C2 -> C3
          /               \
    A -> B                  E -> F
          \               /
            D1 -> D2 ----/
    

    提交的顺序由“topo order”或“date order”完成(参见 GitPro book

    Git 1.6.0 ,可以列出提交的子级。

    git rev-list --children
    git log --children
    

    注:用于 parent commits ^ 修改参数,表示 第一 提交对象的父对象。 ^<n> 是指 <n> 父母(即。 rev^ rev^1 ).

    如果你在分行 foo “和问题” git merge bar “那么 将是第一个家长。
    即:第一个父级是合并时所在的分支,第二个父级是合并时所在分支的提交。