2016-01-10 63 views
1

后,我有一个非常深的git历史查找提交提交

0000001 
0000002 
0000003 
0000004 
... 

我以前git-bisect发现其返回0000003一个老问题的哈希值。原来,解决方案可能这个哈希后趴在提交的一个0000002甚至更​​近的

我可以

后使用

git log 0000003 

,它会显示该项目的历史,直到提交,但没有

0000003 
0000004 
... 

我想查找使用散列的0000003周围/之后的提交 - 即,我想查找0000002而无需手动滚动所有历史记录。

这是如何完成的?

+0

您是否阅读过https://git-scm.com/docs/gitrevisions? –

回答

1

你可以尝试,并期待在未来几年提交(00003后创建的那些)

git log --reverse --pretty=format:%H --ancestry-path 3...master | head -3 

随着3被提交00003的SHA1。

您有“How do I find the next commit in git?”中描述的其他技术。
例如:

git rev-list HEAD..3 | tail -3 

该承担这些未来的提交是由船长或HEAD访问。

在你没有一个特定的“目的地”中记提交,而是希望看到孩子犯上可能出现的任何分支的情况下,你可以使用这个命令:

git rev-list --children --all | grep ^${COMMIT} 
+0

很酷:-)我学到了一些新的“--ancestry-path”不知道, – CodeWizard

0

git bisect是一个很好的选择,以及你已经使用它。

您可以使用HEAD〜X

# set X to be the number of commits you want to start with 
git log HEAD~X 

# Range: between HEAD to the previous X commits 
git log HEAD...HEAD~X 

阅读here有关承诺范围。