我有多个存储库,它有分支我已经合并了远程的更改和从远程删除。我知道如果我运行git remote prune
它会自动删除这些分支,但如果我碰巧在其中一个分支上,那么该分支将保持检出状态。我有一个更新脚本,可以自动将我的所有存储库与远程同步,但是如果本地存储库所在的远程分支已被删除,我希望能够自动切换回master。有谁知道这样做的方法?
答案 0 :(得分:1)
如果不再跟踪当前分支,则有条件地切换到主分支,您可以使用rev-parse
git fetch
git rev-parse \
--symbolic-full-name @{u} \
>/dev/null 2>&1
if [[ $? != 0 ]]; then
git stash
git checkout master
fi
git remote prune origin
此处@{u}
表示当前分支的上游。
答案 1 :(得分:0)
以下是vsminkov答案的略微修改版本,效果很好:
git remote prune origin
git rev-parse --symbolic-full-name @{u} > /dev/null 2>&1
if [[ $? != 0 ]]; then
git checkout master
fi