如何列出Git中每个修订版的每个文件(如Mercurial的hg manifest --all)?

时间:2011-09-25 00:49:24

标签: git mercurial

Mercurial有一个命令列出存储库为每个修订版本所拥有的每个文件:

hg manifest --all

Git中是否有等效的命令?我知道git ls-files,但它只列出索引中的文件(当前版本)。

2 个答案:

答案 0 :(得分:1)

这应该包含所有存在的文件:

git log --pretty=format: --name-only | sort | uniq

答案 1 :(得分:0)

您可以使用以下管道执行此操作:

git rev-list HEAD | xargs -L 1 git ls-tree -r | awk '{print $4}' | sort | uniq

执行以下操作:

  • 使用git rev-list从HEAD
  • 向后获取修订列表
  • 对于每个修订版,使用git ls-tree -r显示文件列表
  • 使用awk
  • 从列表中提取文件名
  • 使用sortuniq,过滤掉多次列出的名称

这将给出每个文件的名称,这些文件曾经是当前HEAD历史的一部分。