列出目录时显示 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 HEAD
与 branch
假设您在一个目录中有多个存储库,您也可以通过替换 branch
来执行 pull
以使所有项目保持同步。
别名可能会派上用场,例如:
alias pb='find . -type d -depth 1 -print0 -exec git --git-dir={}/.git rev-parse --abbrev-ref HEAD \;'
只是一个简单的问题,在列出这些文件夹时,有什么方法可以列出不同文件夹的分支吗?
我的意思是,假设您有几个包含不同项目的文件夹,您想要执行 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 HEAD
与 branch
假设您在一个目录中有多个存储库,您也可以通过替换 branch
来执行 pull
以使所有项目保持同步。
别名可能会派上用场,例如:
alias pb='find . -type d -depth 1 -print0 -exec git --git-dir={}/.git rev-parse --abbrev-ref HEAD \;'