Git:列出所有分支中目录中的所有文件?

时间:2014-12-10 10:44:37

标签: git

我已经找到了一些我正在寻找的文件,但我不确定他们投入了哪些分支。我想在所有分支中列出给定目录的所有文件。

我的问题是,在git中,有没有办法列出所有分支中目录中的所有文件?

2 个答案:

答案 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替换为与您感兴趣的文件匹配的正则表达式。请记住转义路径中的任何斜杠。