在删除远程仓库中的 Git 分支后,如何删除本地 Git 分支?

183

我希望我的本地和远程存储库始终在分支方面保持同步。

在GitHub上进行Pull Request审核后,我会将分支合并并删除(远程)。 如何在本地存储库中获取此信息并让Git也删除我的本地版本分支?


你想删除远程跟踪分支、本地分支还是两者都删除?实际上,你可以编写一个别名(bash 或 git),该别名将处理所有已删除的远程分支,并查找要删除的本地分支副本,一条命令搞定。 - user456814
也许尝试使用以下命令来创建一些内容,git ls-remotegit show-ref - user456814
另外,你可能想要查看git symbolic-refgit update-ref - user456814
3
可能是"[Remove branches no longer on remote]"(https://dev59.com/fmsz5IYBdhLWcg3wsZ8N)的重复问题。 - amaechler
显示剩余2条评论
11个回答

-2

被投票选中的答案确实有可能删除主分支。请考虑以下实际例子。

我有两个功能分支hemen_README和hemen_BASEBOX,它们已经合并到develop分支,然后develop又合并到了master分支。这两个功能分支已经在远程被删除,但是在本地仍然显示。此外,我本地不在master分支上,而是在develop分支上。

在这种情况下

    hemen@hemen-MXC061:~/data/projects/vagrant-webdev$ git branch -v -a
    * develop                      671ad6c Merged in hemen_README (pull request #1)
        hemen_BASEBOX                a535c0f added global exec paths to puppet manifest
        hemen_README                 ba87489 Updated Readme with considerable details
        master                       8980894 [behind 7] Initial Vagrantfile, works for vagrant up. Also initial .gitignore
        remotes/origin/develop       671ad6c Merged in hemen_README (pull request #1)
        remotes/origin/hemen_BASEBOX a535c0f added global exec paths to puppet manifest
        remotes/origin/hemen_README  ba87489 Updated Readme with considerable details
        remotes/origin/master        2f093ce Merged in develop (pull request #3)

所以如果我运行上面的部分命令

    hemen@hemen-MXC061:~/data/projects/vagrant-webdev$ git branch --merged | grep -v "\*"
        hemen_BASEBOX
        hemen_README
        master

注意它也显示了主分支,这将最终被删除。

无论如何,我成功地做到了。我将我的会话日志与您分享,以便您了解我是如何实现的。

    hemen@hemen-MXC061:~/data/projects/vagrant-webdev$ git remote prune origin --dry-run
    Pruning origin
    URL: git@bitbucket.org:hemenkapadiapublic/vagrant-webdev.git
     * [would prune] origin/hemen_BASEBOX
     * [would prune] origin/hemen_README
    hemen@hemen-MXC061:~/data/projects/vagrant-webdev$ git remote prune origin 
    Pruning origin
    URL: git@bitbucket.org:hemenkapadiapublic/vagrant-webdev.git
     * [pruned] origin/hemen_BASEBOX
     * [pruned] origin/hemen_README

我刚刚检查了将要被修剪的内容,然后进行了修剪。从下面的分支命令可以看出我们已经处理了远程内容。

    hemen@hemen-MXC061:~/data/projects/vagrant-webdev$ git branch -v -a
    * develop                671ad6c Merged in hemen_README (pull request #1)
        hemen_BASEBOX          a535c0f added global exec paths to puppet manifest
        hemen_README           ba87489 Updated Readme with considerable details
        master                 8980894 [behind 7] Initial Vagrantfile, works for vagrant up. Also initial .gitignore
        remotes/origin/develop 671ad6c Merged in hemen_README (pull request #1)
        remotes/origin/master  2f093ce Merged in develop (pull request #3)

现在请继续删除本地分支

    hemen@hemen-MXC061:~/data/projects/vagrant-webdev$ git branch -d hemen_BASEBOX 
    Deleted branch hemen_BASEBOX (was a535c0f).
    hemen@hemen-MXC061:~/data/projects/vagrant-webdev$ git branch -d hemen_README
    Deleted branch hemen_README (was ba87489).

好的,现在分支按照预期进行。
    hemen@hemen-MXC061:~/data/projects/vagrant-webdev$ git branch -v -a
    * develop                671ad6c Merged in hemen_README (pull request #1)
        master                 8980894 [behind 7] Initial Vagrantfile, works for vagrant up. Also initial .gitignore
        remotes/origin/develop 671ad6c Merged in hemen_README (pull request #1)
        remotes/origin/master  2f093ce Merged in develop (pull request #3)

当然它有删除主分支的潜力。请仔细阅读问题。正如我在那里所说,我需要一种清理本地文件的方法。这意味着删除所有不再存在于远程的分支。如果主分支不再存在,则它也将从您的本地机器上消失。 - sf89

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接