截至Git 2.28版本,简短的回答是“不行”。如
Brent Faust所述,如果您想让
git status
打印多个上游值的信息,则必须设置当前分支的上游,然后运行
git status
,再次设置并再次运行。
一切都没有丧失
虽然您无法让git status
实现此功能,但您可以使用其他不同的Shell命令来实现您想要的功能:
counts=$(git rev-list --count --left-right $chosen_upstream...$branch)
counts
变量现在包含两个值:远程领先,我落后的值和远程落后,我领先的值。如果这两个值都为零,则您的分支和所选的上游分支是平衡的。(如果要交换计数,请交换
$chosen_upstream
和
$branch
变量。)
要将其转换为更有用的shell函数(在普通的
sh
和
bash
中有效):
report() {
local branch upstream count
case $# in
1) branch=$(git symbolic-ref HEAD 2>/dev/null) || return 1;;
2) branch="$2";;
*) echo "usage: report <upstream> [<branch>]" 1>&2; return 1;;
esac
upstream="$1"
count=$(git rev-list --count --left-right "$upstream...$branch") || return 1
set -- $count
case $1,$2 in
0,0) echo "Your branch is up-to-date with $upstream";;
0,*) echo "Your branch is $2 commits ahead of $upstream";;
*,0) echo "Your branch is $1 commits behind $upstream";;
*) echo "Your branch and $upstream have diverged,"
echo "and have $2 and $1 different commits each, respectively.";;
esac
}
(上面的输出旨在与
git status
的输出匹配,不适用于两个参数的形式,但它展示了如何在此处执行所需操作。)
(由于我如何进行git status upstream?的链接,在2020年回答)
git status
命令会得到该输出结果。我不确定是否可以同时将本地分支设置为跟踪多个远程分支。请参阅git branch
命令的--track
选项文档。 - user456814