![如何显示 git 知道的所有文件?](https://linux22.com/image/43995/%E5%A6%82%E4%BD%95%E6%98%BE%E7%A4%BA%20git%20%E7%9F%A5%E9%81%93%E7%9A%84%E6%89%80%E6%9C%89%E6%96%87%E4%BB%B6%EF%BC%9F.png)
如何生成 git 在整个历史过程中了解的文件名(包括路径)列表?
答案1
天真的解决方案:
git rev-list --all | xargs -n1 git ls-tree --full-name -r --name-only | sort -u
这会列出所有提交,然后使用它来列出每个提交中的所有文件。排序去重。但仅适用于小型回购,因为它需要很长时间。
更好的解决方案是使用 libgit2 来做同样的事情,应该更快,但需要一些编程。可以找到实现此功能的快速技巧在 github 上。它使用 pygit2,比上面的 shell 管道快一个数量级。