假设我有一个带有多个分支的git仓库。我怀疑某些分支没有向上游推送,或者已经过时,或者两者都是(即分叉)。
是否有一种方法可以通过一个命令查找哪些分支与远程不同步?(编写脚本可以,但我想知道是否已经有这样的脚本存在)。
是否有一种方法可以通过一个命令查找哪些分支与远程不同步?(编写脚本可以,但我想知道是否已经有这样的脚本存在)。
我已经写了一个脚本。结果发现git branch -v
给出了必要的信息。
~/bin/git-total.sh:
#!/bin/sh
for DIR in "$@"; do
# Only git dirs interesting
[ -d "$DIR/.git" ] && cd "$DIR" || continue
# git branch -v gives ahead/behind info
# using perl - sorry for this
MOD=`git branch -v | perl -wlne '/^..(\S+)\s+([a-f0-9]+)\s+(\[ahead\s+(\d+)\])/ or next; print "# Branch ahead: $1"; '`;
# a series of UGLY HACKs to get pretty-printing
[ ! -z "$MOD" ] && MOD="
$MOD"
git status | grep -q '^# Changes' && MOD="$MOD
# Uncommitted changes present"
# print summary
[ ! -z "$MOD" ] && echo -e "$DIR:$MOD"
cd -
done
git remote show origin
。我不确定,但它对我很有效。为了知道远程是否已更改,您至少需要进行一次git fetch以更新远程引用。之后,git status将告诉您是否落后或领先于远程以及有多少提交。
git branch -v
给出了必要的信息。 - Dallaylaen
git branch -v
显示了。 - Dallaylaen