我有一个几个月前的git hash(让我们说xyz
),并希望
查看直到今天为止该哈希前后master分支上的所有提交。
我知道git checkout xyz~1
在该哈希值之前返回了1次提交,并且git log
显示了所有先前的提交,但我不知道如何前进?
在这种情况下,可以使用git的--grep
功能吗?
答案 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
假设您只想获取20323a1
(xyz
)之前的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
。