我正在寻找一种工具,或者对脚本的建议,它能够根据文件名和文件内容(find
/ grep
-like)在 Git 存储库中搜索文件。它不仅需要能够在当前签出的分支中进行搜索,而且还需要能够在该分支的历史记录以及其他分支中进行搜索。
我拥有的 Git 存储库的一个非常具体的示例是dspinellis'unix-history-repo
的检出。我经常在那里寻找事物的历史实现,但是跟踪文件很痛苦,因为我经常需要猜测我需要查看哪个分支(该存储库中有 165 个分支)。
我想用这个工具做的事情的例子是找到wow
command,如果它作为一些早期 BSD Unix 的一部分存在(如果它存在),它可能是外部命令sh
或内置命令csh
完全)。为此,我想在 dspinellis 的 Git 存储库的 165 个分支中搜索wow.*
文件名模式,以及可能在某些时候包含C 函数的文件。wow
呵呵,猜猜我也做了什么……
要在所有分支中查找文件名,我使用
wow
可以用任何全局替换。这在 Unix 历史存储库上运行得非常快。该格式显示了导致创建匹配文件的哈希,因此您可以在该点检查树并进一步探索。要在所有分支中搜索文件内容,我使用
它列出了所有提交对象并通过它们进行搜索。这在 Unix 历史存储库中非常非常慢;列出所有分支并在那里查找更快: