我有一个很少有分支和悬空提交的Git存储库。我想在存储库中搜索一个特定字符串的所有这样的提交。
我知道如何获得历史中所有提交的日志,但这些不包括分支或悬垂的blobs,只包括HEAD的历史。我想把它们都找回来,找到一个被放错地方的特定提交。
我还想知道如何在Mercurial做到这一点,因为我正在考虑切换。
我有一个很少有分支和悬空提交的Git存储库。我想在存储库中搜索一个特定字符串的所有这样的提交。
我知道如何获得历史中所有提交的日志,但这些不包括分支或悬垂的blobs,只包括HEAD的历史。我想把它们都找回来,找到一个被放错地方的特定提交。
我还想知道如何在Mercurial做到这一点,因为我正在考虑切换。
当前回答
如果您是vim用户,您可以安装tig (apt-get install tig),并使用/,相同的命令在vim上搜索
https://blogs.atlassian.com/2013/05/git-tig/
其他回答
git中的一个命令,我认为它更容易找到一个字符串:
git log --pretty=oneline --grep "string to search"
适用于Git 2.0.4
基于rq的答案,我发现这一行做了我想要的:
git grep "search for something" $(git log -g --pretty=format:%h -S"search for something")
它将报告提交ID,文件名,并显示匹配的行,如下所示:
91ba969:testFile:this is a test
... 有人同意这将是一个很好的选项,包括在标准的git grep命令?
如果您是vim用户,您可以安装tig (apt-get install tig),并使用/,相同的命令在vim上搜索
https://blogs.atlassian.com/2013/05/git-tig/
在Mercurial中,使用hg log——keyword搜索提交消息中的关键字,使用hg log——user搜索特定用户。有关限制日志的其他方法,请参阅hg help log。
在Mercurial中,你做了一个
$ hg grep "search for this" [file...]
还有其他选项可以缩小搜索的修订范围。