如果在Git中删除,则修剪分支并自动切换回master

时间:2016-09-02 22:34:30

标签: git

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

2 个答案:

答案 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