为什么我仍然可以签出我在远程GitLab上删除的分支

为什么我仍然可以签出我在远程GitLab上删除的分支,git,version-control,gitlab,Git,Version Control,Gitlab,我在GitLab上有一个项目,我从master创建了一个名为处理点的分支,不是从命令行而是通过web界面 然后,我删除了分支处理点,也从web界面删除了分支。因此,从web界面上一切正常,但在本地计算机上,我仍然可以签出已删除的分支。这怎么可能 以下是我要求结账时得到的建议: ag@ag-Precision-7520:~/catkin_ws/3D_EM$ git checkout HEAD origin/master

我在GitLab上有一个项目,我从master创建了一个名为
处理点
的分支,不是从命令行而是通过web界面

然后,我删除了分支
处理点
,也从web界面删除了分支
。因此,从web界面上一切正常,但在本地计算机上,我仍然可以签出已删除的分支。这怎么可能

以下是我要求结账时得到的建议:

ag@ag-Precision-7520:~/catkin_ws/3D_EM$ git checkout 
HEAD                                    origin/master                           origin/Processing-points-multi-thread 
master                                  origin/origin/parallelization           parallelization 
ORIG_HEAD                               origin/parallelization                  pcl_filters 
origin/HEAD                             origin/pcl_filters                      Processing-points-multi-thread

您可以使用以下方法清除对远程分支的过时引用:

git remote prune origin

您可以通过以下方面解决此问题:

  • 使用
    git branch-r
    检查跟踪分支
    原点/处理点是否存在。如果存在,可以使用以下命令更新:

    git fetch -p
    git checkout master #if the HEAD is on local Processing-points branch
    git branch -D Processing-points
    
  • 如果跟踪分支
    原始/处理点
    不存在,这将导致在远程删除分支之前,
    处理点
    分支已在本地签出。即使您删除了远程
    处理点
    分支,本地分支
    处理点
    也始终存在。您可以使用
    git branch-D处理点
    删除本地处理点


  • 我使用
    git branch-r
    并在列表中看到了原点/处理点。我只需要做
    git fetch-p
    就可以得到这样的响应:
    x[deleted](none)->源/处理点多线程
    ,一切看起来都很好。
    谢谢你的帮助

    似乎你没有删除本地分支,或者你从未删除跟踪分支,
    git checkout
    创建了一个新的本地副本。相关:事实上,@Jubobs,你链接到的答案以一种比我要写的更好的方式解释了情况:-)。@MatthieuMoy来自你,这个评论让我非常高兴:)我使用git branch-r并查看了源/处理点,然后我只需添加一个git fetch-p就可以得到这样的响应:是的,您可以执行
    git fetch-p
    从远程repo中删除分支
    处理点
    。但是本地
    处理点
    分支仍然存在。如果还要删除本地
    处理点
    分支,请继续执行
    git branch-D处理点
    以删除本地
    处理点
    分支。