如何简化git日志以仅显示某些提交及其合并基础?

时间:2017-09-21 10:49:00

标签: git

例如,如果我这样做:

git log --oneline --graph --decorate master branch dcfadf1

我看到所有提交:

* e8599bb (HEAD -> branch) branch5
* 2fe1c92 branch4
| * f083d02 (master) master5
| * d33bf64 master4
|/  
* a286c74 master3
* dcfadf1 master2
* 6f58634 master1

但是,我只想看看:

* e8599bb (HEAD -> branch) branch5
| * f083d02 (master) master5
|/  
* a286c74 master3
* dcfadf1 master2

以更好地了解这些特定提交的相关性。

为什么每个提交应该出现的那些:

  • e8599bbbranch),f083d02master)和dcfadf1:在命令行中给出
  • a286c74:合并命令行(branchmaster)上提交的两个提交的基础(最近的共同祖先)。

我不能使用--simplify-by-decoration,因为我的实际仓库有很多我不关心的分支,而且默认情况下会删除合并基础:http://git.661346.n2.nabble.com/quot-git-log-simplify-by-decoration-quot-but-including-branch-amp-merge-points-td6825766.html

以下是测试回购:https://github.com/cirosantilli/test-so-46270360

1 个答案:

答案 0 :(得分:0)

如评论中所述,git gc如果您打算查看不一定相互关联的提交,则毫无意义。因此,我建议您放下--graph,您将可以使用--graph

以下是--no-walk的{​​{1}}文档,以供参考:

仅显示给定的提交,但不遍历其祖先。如果指定范围,则无效。如果给出了unsorted参数,则按照在命令行中给出的顺序显示提交。否则(如果已排序或未提供任何参数),则按提交时间以相反的时间顺序显示提交。不能与--graph结合使用。

因此,在您的示例中,我将使用:

git log