列出目录时显示 git 分支 - Ubuntu 终端

Showing git branch when listing directories - Ubuntu Terminal

只是一个简单的问题,在列出这些文件夹时,有什么方法可以列出不同文件夹的分支吗?

我的意思是,假设您有几个包含不同项目的文件夹,您想要执行 ls -l 并查看不同文件夹中的分支,有什么办法吗?

ls -l  | awk '{cmd="git --git-dir="$NF"/.git branch 2>/dev/null| grep ^*";system(cmd "> .tmp");getline branch < ".tmp";close(".tmp");print [=10=]" "branch} END {cmd="rm -rf .tmp";system(cmd)}'

我不擅长awk,这只是一个粗略的解决方案。

这将打印目录和当前:

find . -type d -depth 1 -print0 -exec git --git-dir={}/.git rev-parse --abbrev-ref HEAD \;

输出将类似于:

./dir<branch>

要使用 space ./dir<space><branch> 改进输出,这可能有效:

find . -type d -depth 1 -print0 -exec sh -c 'b=$(git --git-dir={}/.git rev-parse --abbrev-ref HEAD); echo " $b"' \;

要查看所有可用的分支:

find . -type d -depth 1 -print0 -exec git --git-dir={}/.git branch \;

注意 rev-parse --abbrev-ref HEADbranch

假设您在一个目录中有多个存储库,您也可以通过替换 branch 来执行 pull 以使所有项目保持同步。

别名可能会派上用场,例如:

alias pb='find . -type d -depth 1 -print0 -exec git --git-dir={}/.git rev-parse --abbrev-ref HEAD \;'