git 列出每个分支中所有跟踪的文件

6psbrbz9  于 2023-02-07  发布在  Git
关注(0)|答案(1)|浏览(170)

我知道可以在给定的分支中使用git ls-treelist all tracked files。有没有一种有效的方法可以列出 * 所有分支 * 中的所有跟踪文件?
当然,你可以写一个小脚本,比如:

#!/bin/bash
(
  for b in $(git branch --no-color|tr '*' ' '|tr -s " "|cut -d " " -f 2)
  do
     git ls-tree -r "${b}" --name-only
  done
)| sort | uniq

然而,当有许多分支时,这似乎相当低效,尤其是如果像往常一样,大多数文件在所有分支中被跟踪。
是否有更有效的方法列出所有跟踪的文件?

qpgpyjmq

qpgpyjmq1#

问题是Git没有“所有被跟踪文件”的概念;这个概念本身是没有意义的。Git的概念正是ls-tree所表达的概念:对于 * 任意给定的commit*(或其他树型对象),它包含哪些文件?
显然,这是Git可以为 * 任何 * 树型对象做的事情。碰巧 * 你 * 只对那些分支名称指向它们的树型对象感兴趣。因此,没有什么“皇家”可以收集这些信息;你只需要指定你感兴趣的提交,然后一个接一个地查看它们。

相关问题