我已经找到了一些我正在寻找的文件,但我不确定他们投入了哪些分支。我想在所有分支中列出给定目录的所有文件。
我的问题是,在git中,有没有办法列出所有分支中目录中的所有文件?
答案 0 :(得分:3)
您可以使用 git ls-tree 获取目录中的文件。
我在这里将git ls-tree
的输出写入文件。
$ for branch in $(git for-each-ref --format='%(refname)' refs/heads/); do
git ls-tree -r --name-only $branch <directory> >> file-list ;
done
您可以通过以下方式获取唯一文件:
sort -u file-list
答案 1 :(得分:1)
使用git ls-tree -r
以递归方式列出特定树形的所有文件。与git for-each-ref
结合使用可枚举分支和一些shell过滤。
for i in $(git for-each-ref '--format=%(refname)' 'refs/heads/*') ; do
echo $i
git ls-tree -r $i | awk '$4 ~ /filename-pattern/ {print $4}'
echo
done
将filename-pattern
替换为与您感兴趣的文件匹配的正则表达式。请记住转义路径中的任何斜杠。