我已经开始使用在这个帖子中发布的一个脚本:
#!/bin/bash
main() {
REMOTES="$@";
if [ -z "$REMOTES" ]; then
REMOTES=$(git remote);
fi
REMOTES=$(echo "$REMOTES" | xargs -n1 echo)
CLB=$(git branch -l|awk '/^\*/{print $2}');
echo "$REMOTES" | while read REMOTE; do
git remote update $REMOTE
git remote show $REMOTE -n \
| awk '/merges with remote/{print $5" "$1}' \
| while read line; do
RB=$(echo "$line"|cut -f1 -d" ");
ARB="refs/remotes/$REMOTE/$RB";
LB=$(echo "$line"|cut -f2 -d" ");
ALB="refs/heads/$LB";
NBEHIND=$(( $(git rev-list --count $ALB..$ARB 2>/dev/null) +0));
NAHEAD=$(( $(git rev-list --count $ARB..$ALB 2>/dev/null) +0));
if [ "$NBEHIND" -gt 0 ]; then
if [ "$NAHEAD" -gt 0 ]; then
echo " branch $LB is $NBEHIND commit(s) behind and $NAHEAD commit(s) ahead of $REMOTE/$RB. could not be fast-forwarded";
elif [ "$LB" = "$CLB" ]; then
echo " branch $LB was $NBEHIND commit(s) behind of $REMOTE/$RB. fast-forward merge";
git merge -q $ARB;
else
echo " branch $LB was $NBEHIND commit(s) behind of $REMOTE/$RB. reseting local branch to remote";
git branch -l -f $LB -t $ARB >/dev/null;
fi
fi
done
done
}
main $@
到目前为止,它的工作效果很好,但我想知道如何调整它以拉取所有分支,因为某些原因它无法拉取特定的本地分支。 第一个例子:我有4个本地分支落后于主分支,运行此脚本后,几个(4个)相对于远程分支落后的分支被拉取了,但我仍然可以看到主分支落后于远程分支,如下图所示: 第二个例子:在运行脚本之前,我得到了这个结果,有两个本地分支落后了,而当前的一个(release)是正常的: 我运行了脚本,得到了这个:
那么,我该如何调整脚本以拉取“所有”本地分支?
master
分支落后了。还有其他分支也落后吗? - Tim Biegeleisen