【问题标题】:How to get all the commits for a merge request in git?如何在 git 中获取合并请求的所有提交?
【发布时间】:2019-09-02 06:53:07
【问题描述】:

git show --raw 命令将显示是否从合并中生成了提交哈希:

$ git show --raw -m 3d1718
commit 3d1718fb99d52d35700b596bac45caffd1af00dc (from 8923654049aa49c4813fa612e4108271e0361240)
Merge: 8923654 3f1a071
...

如果合并来自分叉到 origin/master,解析输出将显示哪个提交哈希是 origin/master 的 HEAD,哪个提交哈希来自分叉。到目前为止,一切顺利。

一旦我获得了来自 fork 的提交哈希,我将如何为属于该合并的所有提交生成哈希列表?历史可能如下所示:

H---->J---->W    origin/master
 \         /
  Q-->R-->T      fork

在这种情况下,git show --raw -m 命令将在 W 的哈希值上执行,我可以得到 T 的哈希值。但是如何获得 Q 和 R 的哈希值?

【问题讨论】:

  • 旁注(与您的问题无关,但它解释了很多关于 Git :-) ):Git 维护所有点的内部箭头 向后,从 W 到 J 和例如,T,从 T 到 R,等等。 Git向后工作。每当您发现自己想知道:Git 为什么要这样做,请记住:哦,是的...Git 向后工作 :-)跨度>

标签: git


【解决方案1】:

会:

git log master~..fork --oneline

适合你吗?

它在fork 中记录所有提交,但不在master~ 中(合并前的一次提交)。

就提交而言,它将是:

git log J..T --oneline

【讨论】:

    【解决方案2】:

    git log $(git merge-base --octopus $(git log -1 --merges --pretty=format:%P)).. --boundary
    Show commits involved in a prior git merge

    【讨论】:

      猜你喜欢
      • 2016-03-02
      • 1970-01-01
      • 1970-01-01
      • 2019-03-20
      • 1970-01-01
      • 1970-01-01
      • 2019-02-03
      • 2016-03-01
      • 2012-02-21
      相关资源
      最近更新 更多