列出Git存储库中存在的所有文件

elm*_*rco 101 git

您是否有一种干净的方法来列出指定分支中存在的所有文件?

Dus*_*tin 128

这是Strager 解决方案的简化版本:

git log --pretty=format: --name-status | cut -f2- | sort -u
Run Code Online (Sandbox Code Playgroud)

编辑:感谢Jakub在评论中教我更多,这个版本有一个更短的管道,让git有更多机会把事情做好.

git log --pretty=format: --name-only --diff-filter=A | sort -u
Run Code Online (Sandbox Code Playgroud)

  • @Dustlin:添加--diff-filter =一个选项(仅列出添加的文件).如果您已启用重命名检测并在历史记录中重命名,则当前版本(不使用sed过滤仅添加的文件)将失败.我想你可以使用--name-only而不是--name-status并从管道中删除'cut -f2-'. (7认同)
  • *注意:如果你有一个以上的孤儿小费,你就需要`--all`.例如,一个回购中有多个独立的历史.* (3认同)
  • --diff-filter = A会忽略通过复制现有文件创建的文件,因此添加文件可能不会总是您想要的。 (2认同)

dch*_*dch 13

这对于检查repo中是否存在文件名而不仅仅是当前分支是正确的.

git log --all --pretty=format: --name-only --diff-filter=A | sort - | grep fubar
Run Code Online (Sandbox Code Playgroud)