gpt4 book ai didi

bash - 如何获取我的 git 本地存储库的每个分支的信息

转载 作者:行者123 更新时间:2023-12-03 20:25:57 25 4
gpt4 key购买 nike

这是什么git branch -v在我的本地目录之一中生成

* develop e229f7a Merge branch 'develop' of https://github.com/me/myremote-repo.git into develop Some diffs
master 3343dea [behind 2] Added git-log, same as git_log without colorization

我试图通过该命令的一组分支和输出
如果输出包含 [ahead n] 或 [behind m],我想发布如下语句:

[behind 2] --> bin [master] 3343dea
[ahead 1] --> bin [develop] 99345b

对于每个分支,如果它包含在前面或后面。

我目前在我的代码中有以下内容:
MOD=`git branch -v | perl -wlne '/^..(\S+)\s+([a-f0-9]+)\s+(\[ahead\s+\d+\]|\[behind\s+\d+\])/ or next; print  "$3 --> $ENV{reponame} [$1] $2"; '`;

[ ! -z "$MOD" ] && MOD="$MOD" | ok=false
if $ok; then
echo " OK --> $reponame [$br]"
else
# a series of UGLY HACKs to get pretty-printing
MOD=`echo "$MOD" | tr -d '\011\012\015' | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//'` | sed -e 's/]#/]\
#/'
if [ ! -z "$MOD" ]; then
echo -e " $MOD" && continue
fi
fi


bin [develop] --> Out of sync with origin/HEAD at /Users/me/bin
bin [develop] --> Changes to be staged/committed at /Users/me/bin
[behind 2] --> bin [master] 3343dea
OK --> patti [develop]
OK --> notes [master]
OK --> indecks [develop]
OK --> queue [develop]
OK --> frameworks [develop]
OK --> nodejs [master]
OK --> perl-forth [develop]
OK --> patti [master]
OK --> blog [develop]

问题是我只得到第一个。如果有两个分支的前面或后面,我只会得到第一个。我尝试了几种方法来将 git branch -v 的输出放入一个数组中,然后遍历该数组,如果它与模式匹配,则进行打印。问题是我找不到以一种有效的方式将输出放入数组的方法。然后当我遍历数组时,我得到所有文件的列表。

我用:
branches={`git branch -v`)
for i in "${branches[@]}"
do
echo "$i"
done

我得到的是目录中所有文件的列表!

为什么,我该怎么办?

最佳答案

使用 readwhile循环以获取来自 perl 的行进入 MOD逐个。

git branch -v |
perl -wlne'
print "$3 --> $ENV{reponame} [$1] $2"
if /^..(\S+)\s+([a-f0-9]+)\s+(\[(?:ahead|behind)\s+\d+\])/
' |
while IFS= read -r MOD; do
printf '{%s}\n' "$MOD" # Replace with code that uses $MOD
done

关于bash - 如何获取我的 git 本地存储库的每个分支的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61111876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com