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

IT2*_*IT2 10 git mercurial

Mercurial 有一个命令可以列出存储库中每个修订版的每个文件:

hg manifest --all
Run Code Online (Sandbox Code Playgroud)

Git 中是否有等效的命令?

Ste*_*ngs 3

我对 shell 脚本一窍不通,所以这肯定不是最理想的,但假设你使用的是 bash,这种事情可能会为你做。希望其他人可以过来清理它,或者用更好的东西替换它。我只在我的 Mac 上测试过,所以要小心。

它应该打印提交中作为当前 HEAD 祖先的所有文件。manifest.sh将其保存在路径中某处名为的文件中:

#!/bin/bash

TFILE=$(mktemp -t git-manifest)

for sha in $(git log --pretty=format:%H)
do
    git ls-tree --name-only --full-tree -r $sha >> $TFILE
done

sort -u $TFILE
rm $TFILE
Run Code Online (Sandbox Code Playgroud)