GIT:如何搜索文件的旧版本并列出符合搜索条件的所有版本?



我有一个包含某个文件的repo。我需要创建一个git脚本,该脚本搜索此文件的所有先前版本,并列出包含特定字符串的提交sha。我想有一个列表的所有提交的版本字符串存在。

我能找到的最好的答案在这里(但还不够好):https://stackoverflow.com/a/4705617/4441211这个解决方案不够好,因为它只能找到有变化的地方(即搜索词被添加或删除)。有人有更好的办法吗?

查找模式<pattern>中文件<path/to/file>中的提交<commit>:使用git grep

git grep -e <pattern> <commit> -- <path/to/file>

查看git help grep了解更多细节:许多选项都复制了原始的grep命令(-l只列出文件名,-q删除输出…)


如果你的意图是扫描所有的提交来寻找一个字符串(而不仅仅是发生更改的提交):

  • git rev-list HEAD会给你的列表中所有提交的祖先活跃的分支,
  • 写一个循环来重复调用git grep

例如:

git rev-list HEAD | while read sha; do
git grep -q -e <pattern> $sha -- <path/to/file> && echo $sha
done

相关内容

  • 没有找到相关文章

最新更新