在给定提交哈希的情况下搜索git日志

时间:2019-03-11 23:53:47

标签: git

我有一个几个月前的git hash(让我们说xyz),并希望 查看直到今天为止该哈希前后master分支上的所有提交。

我知道git checkout xyz~1在该哈希值之前返回了1次提交,并且git log显示了所有先前的提交,但我不知道如何前进?

在这种情况下,可以使用git的--grep功能吗?

1 个答案:

答案 0 :(得分:0)

很难给出一个答案,因为这取决于您的树的外观, xyz 的位置以及提交或合并到 master 的方式。该答案假定您只关心从 xyz master 的提交。

说我们有这棵树:

*   f10abeb (HEAD -> master) Merge branch 'develop' into 'master'
|\  
| *   3a7ed63 Merge branch 'feature/A' into 'develop'
| |\  
| * | f3972b9 Update in develop 1
| | * f695720 Update in feature/A
| * | 20323a1 Update in develop 2 
| * | 3e81e7a Update in develop 3 
| * | 1e76a6c Update in develop 4
| * | d3bf88f Update in develop 5
| | * 205fc0e Update in feature/A

假设您只想获取20323a1xyz)之前的2次提交和master的本地副本(我假设您的意思是“ 直到今天”)。您不必担心feature/A中的“内部”提交,但是您确实想查看它何时被合并。 (我在这里假设很多)。

首先,您需要在20323a1之前检出2个提交:

git checkout 20323a1~2

那将带您到1e76a6c
然后,您可以执行以下操作:

git log --ancestry-path @^..master

这将为您提供以下日志:
(我删除了一些信息,例如日期和时间等)

commit f10abebbfa9bce8074e9a4854af4fc1a000b2f6a
Merge: 6011c88 3a7ed63

    Merge branch 'develop' into 'master'

commit 3a7ed6334d492ebb7960c97c1c59c88d40c28108
Merge: f3972b9 f695720

    Merge branch 'feature/A' into 'develop'

commit f3972b9ca16ff27914120de12105b8203a2682fa

    Update in develop 1

commit 20323a1fc4c636b7e12650659ca049c2a1c497c4

    Update in develop 2 

commit 3e81e7a1624e6914dc152ca315c727e15ebf3300

    Update in develop 3

commit 1e76a6cb326ffce64ff22480a71b49de4dbdff73

    Update in develop 4

--ancestry-path选项将“ 仅显示直接存在于commit1和commit2之间的祖先链上的提交”(在此示例中,为当前提交和主提交)。

r1..r2是点范围的符号,表示提交“ 从r2可以到达的提交,但不包括从r1可以到达的”。然后我们将r1指定为当前提交(@),将r2指定为master