Git:列出repo根目录下的所有目录

Git:列出repo根目录下的所有目录,git,version-control,Git,Version Control,我需要一种方法来列出存储库根目录中曾经存在的所有目录。我需要他们从每个分支和标签 例如: 我当前的回购协议在主分支的根目录下有20个目录。在我们的开发分支上,曾经有一个名为“lib”的目录。此目录已被删除。我需要一个命令来列出这个“lib”文件夹,以及它的分支的当前提交上可能存在或不存在的所有其他目录。我都需要 我尝试过“rev list”,但它似乎只给出当前分支的结果。您可以使用git cat file-p打印树对象的内容,并且commit^{tree}符号提取提交的树对象,即您可以说git

我需要一种方法来列出存储库根目录中曾经存在的所有目录。我需要他们从每个分支和标签

例如:
我当前的回购协议在主分支的根目录下有20个目录。在我们的开发分支上,曾经有一个名为“lib”的目录。此目录已被删除。我需要一个命令来列出这个“lib”文件夹,以及它的分支的当前提交上可能存在或不存在的所有其他目录。我都需要


我尝试过“rev list”,但它似乎只给出当前分支的结果。

您可以使用
git cat file-p
打印树对象的内容,并且
commit^{tree}
符号提取提交的树对象,即您可以说
git cat file-p HEAD^{tree}
列出当前提交的根目录内容。使用
git rev list--all
获取所有提交的SHA-1,并过滤掉除树对象以外的任何内容

while read commit ; do
  git cat-file -p $commit^{tree}
done < <(git rev-list --all) | awk '$2 == "tree" { print $4 }' | sort -u
读取提交时
;做
git cat文件-p$commit^{tree}

完成
git whatchanged--pretty=oneline--remote
?我不太明白。“whatchanged”应该是什么?他的字面意思是
git whatchanged
。这实际上是一个很好的建议,执行速度比我的建议快得多,但它确实依赖于一个命令,并且需要对输出进行稍微复杂的解析。我的错误。但当我运行这个命令时,我得到:“致命的:无法识别的参数:--remote”。似乎是“完成”之后第3行的语法错误。(我用的是cygwin,如果有必要的话。)你用的是什么外壳?您的shell可能不喜欢路径替换(
我使用的是cygwin(实际上是git-bash)。第二个命令工作得很好,只是我遇到了一个异常:STATUS\u ACCESS\u违例。不过,它似乎仍然提供了相当完整的输出。