如何生成 git 在整个历史过程中了解的文件名(包括路径)列表?
答案1
天真的解决方案:
git rev-list --all | xargs -n1 git ls-tree --full-name -r --name-only | sort -u
这会列出所有提交,然后使用它来列出每个提交中的所有文件。排序去重。但仅适用于小型回购,因为它需要很长时间。
更好的解决方案是使用 libgit2 来做同样的事情,应该更快,但需要一些编程。可以找到实现此功能的快速技巧在 github 上。它使用 pygit2,比上面的 shell 管道快一个数量级。