显示git commit历史差异

时间:2013-12-06 15:03:56

标签: git

获取从提交A到B以及反向获取所需的提交列表的命令是什么? 这实际上是两次提交的提交历史之间的图形差异。

1 个答案:

答案 0 :(得分:1)

git rev-list可以回答这三个不同的,常用的图形差异问题:

  • 可以从B但无法从AA..B(或B ^AB --not A
  • 提交
  • 可以从A但无法从BB..A(或类似的替代方案)
  • 提交
  • 提交不属于其共同祖先的ABA...B(在此处指定A和B的顺序并不重要。)

考虑这个图片段:

-1-2-4-5-A
    \
     3-B

在这种情况下,无法从AB前进,反之亦然,但您可以在顶部进行最后三次提交(4-5-A) ),或者两个沿着底部(3-B),分别带有B..AA..B。您可以使用A...B获取所有这五个。同时使用A..BB..A,您可以找出从A中删除的内容(A本身,然后是5,然后是4),然后添加(3和B本身),以获得&# 34;从A到B"。

正如文档所述,提交者默认按时间顺序排列"",但这也是可控制的。您可能需要--topo-order,有时需要--reverse

但是,在存在复杂拓扑的情况下,如上所述的简单序列("删除它,添加")是不够的。例如:

...-x-o-o-o-o-o-B
     \   /   /
      A-o-o-o

所有o个节点从AB"可能很重要,但现在,没有纯粹的线性遍历(在提交之前提交X) Y,然后提交Z)可以重建完整的图形:您需要更多信息(例如,列出与每个提交相关联的父项)。 git rev-list可以做到这一切;仔细阅读和研究手册页的例子。