修剪分支并在Git中删除时自动切换回主分支

修剪分支并在Git中删除时自动切换回主分支,git,Git,我有多个存储库,这些存储库中有我从远程服务器合并和删除的分支。我知道如果我运行git remote prune它会自动删除这些分支,但如果我碰巧在其中一个分支上,该分支将保持签出状态。我有一个更新脚本,可以自动将我的所有存储库与远程同步,但如果本地存储库所在的远程分支已被删除,我希望它能够自动切换回主存储库。有人知道这样做的方法吗?要有条件地切换到主分支,如果当前分支不再被跟踪,您可以使用rev parse git-fetch git版本解析\ --符号全名@{u}\ >/dev/null 2>

我有多个存储库,这些存储库中有我从远程服务器合并和删除的分支。我知道如果我运行
git remote prune
它会自动删除这些分支,但如果我碰巧在其中一个分支上,该分支将保持签出状态。我有一个更新脚本,可以自动将我的所有存储库与远程同步,但如果本地存储库所在的远程分支已被删除,我希望它能够自动切换回主存储库。有人知道这样做的方法吗?

要有条件地切换到主分支,如果当前分支不再被跟踪,您可以使用
rev parse

git-fetch
git版本解析\
--符号全名@{u}\
>/dev/null 2>&1
如果[[$?!=0]];然后
暂存
切换到主分支
fi
git远程修剪源

这里的意思是当前分支的上游。

这里是对vsminkov的答案稍加修改的版本,效果很好:

git remote prune origin
git rev-parse --symbolic-full-name @{u} > /dev/null 2>&1
if [[ $? != 0 ]]; then
    git checkout master
fi

我想关键的一点是,只有当当前分支被删除时,我才想切换到master。看起来这些命令总是会切换到master。你的答案对我不起作用,但我根据你的答案制作了自己的版本,确实有效。