前言

在用git开发过程中,我们在分支合并后会将分支删除。这里我们会遇到两种情况,一是本地和远程的分支都还在,另一种就是远程仓库已经删除了,但本地仓库还有备份。

本地和远程分支都在

这是最常见的情况了,在这种情况下,我们会先删除本地分支,再删除远程分支。

1. 删除本地分支

在git中,删除本地分支并不会影响远程仓库中的任何分支。删除本地分支的命令:

git branch -d <local_branch>

先列出所有本地分支

$ git branch
* feature/test1main

我们可以看到现在本地有两个分支,当前在<feature/test1>这个分支上。接下去我们要删除这个分支,就得先切换到其他分支

$ git checkout main
Switched to branch 'main'
Your branch is up to date with 'origin/main'.
$ git branch -d feature/test1
Deleted branch feature/test1.

注意,如果分支包含未合并的更改和未推送的提交,则该 -d标志将不允许删除本地分支。此时,如果你确定了不想要分支的内容,可以使用 -D替换 -d来强制删除此分支

现在我们再来看看分支情况:

$ git branch -a
* mainremotes/origin/HEAD -> origin/mainremotes/origin/feature/test1remotes/origin/main

此时我们已经成功删除了本地仓库<feature/test1>,但我们之前有推送过分支到远程仓库,从上面列表可知,远程仓库中还存在此分支,那我们还需要删除远程仓库中的分支。

2. 删除远程分支

删除远程分支的命令:

git push <remote_name> -d <remote_branch>

先列出所有远程分支:

$ git branch -rorigin/HEAD -> origin/mainorigin/feature/test1origin/main

我们可以看到,此时远程仓库有<origin/feature/test1>和<origin/main>两个分支

origin/HEAD并非分支,它指向远程服务器上的默认分支,即为origin的远程仓库中的HEAD,一般此值的指向不会改变,具体请另行Google。

$ git push origin -d feature/test1
To https://github.com/***/git-practice.git- [deleted]         feature/test1

这时候再看看分支情况

$ git branch -a
* mainremotes/origin/HEAD -> origin/mainremotes/origin/main

可以看到我们已经成功删除了本地和远程仓库中的分支。此时,去Github上查看时,分支也已经删除。

清理远程仓库已经删除的分支

有时候因为操作不当,直接在远程仓库中删除了分支,而本地仓库还保留着原来的远程分支副本。此时再用git push <remote_name> -d <remote_branch>删除分支会提示错误:

$ git branch -a
* feature/test2mainremotes/origin/HEAD -> origin/mainremotes/origin/feature/test2remotes/origin/main

此时,我们去Github上直接删除<feature/test2>这个分支,然后再同前文一样进行分支删除。

$ git branch -d feature/test2
Deleted branch feature/test2$ git push origin -d feature/test2
error: unable to delete 'feature/test2': remote ref does not exist
error: failed to push some refs to 'https://github.com/***/git-practice.git'$ git branch -a
* mainremotes/origin/HEAD -> origin/mainremotes/origin/feature/test2remotes/origin/main

当我们查看分支时,可以看到<remotes/origin/feature/test2>还是存在的。此时,我们以下命令查看远程分支和本地的对应关系:

git remote show <remote_name>

$ git remote show origin
* remote originFetch URL: https://github.com/***/git-practice.gitPush  URL: https://github.com/***/git-practice.gitHEAD branch: mainRemote branches:main                              trackedrefs/remotes/origin/feature/test2 stale (use 'git remote prune' to remove)Local branch configured for 'git pull':main merges with remote mainLocal ref configured for 'git push':main pushes to main (up to date)

我们可以看到main分支的状态是tracked,而feature/test2的状态是stale,并且后面git已经提示了处理方式(use ‘git remote prune’ to remove)。

$ git remote prune origin
Pruning origin
URL: https://github.com/***/git-practice.git* [pruned] origin/feature/test2$ git branch -a
* mainremotes/origin/HEAD -> origin/mainremotes/origin/main

至此我们已经成功清理掉远程已经删除的分支在本地的缓存。

本文仅用于本人学习笔记之用,部分内容来源网上,如有侵权,请联系博主删除。

[GIT]如何删除分支相关推荐

  1. git 命令删除分支

    git 命令删除分支 应用场景:有时我们已经在gitlab 或者 gitee 上面已经删除分支,但是本地编辑器 git branch 的时候依然有该分支,我们想删除:亦或者想在本地直接删除远程的分支 ...

  2. git远程删除分支后,本地git branch -a 依然能看到的解决办法

    http://blog.csdn.net/qq_16885135/article/details/52777871 使用 git branch -a 命令可以查http://blog.csdn.net ...

  3. git 删除分支_深入浅出图解Git,入门到精通(保姆级教程)

    原文链接:https://mp.weixin.qq.com/s/_G3l9urASsFjyrYAZBWhDg 分支管理 Git中比较最重要的一点就是分支的概念,有了分支就有了合并和衍合的操作,「合并」 ...

  4. git 删除分支提示: The branch '***' is not fully merged.

    git 在删除分支的时候可以使用git branch -d featurename 也可以是git branch -D featurename 其中是有区别的 git branch -d 的时候如果本 ...

  5. git创建分支、删除分支、查看分支

    git分支 切换分支 git checkout 分支名称 创建一个分支: 创建新分支一定要从master中切出新分支 切换到master分支: git checkout master 拉去代码:*** ...

  6. git删除分支,提示无法删除,怎么处理 ?

    删除之前你自己创建的,自己昵称的dev分支(如 老徐 idoxu_dev) 1)命令 git branch -d 2)效果 如果提示无法删除: [root@istester gittest]# git ...

  7. git版本控制以及分支管理

    git版本控制以及分支管理--一起乘坐时光机 四.深度剖析 一.版本控制---时光机穿梭 1.熟悉版本 2.版本回退 3.管理修改 1.管理修改以及理解工作的原理 2.撤销修改的内容 3.删除文件 二 ...

  8. Git版本控制__分支管理

    文章目录 Git基本操作 1. git 两大特点 2. 安装与配置 3. 创建一个版本库 4.版本创建与回退 4.1 使用 4.2 工作区和版本库 工作区 ( Working Directory ) ...

  9. git创建、切换、合并、删除分支

    创建分支 git branch 分支名 git log --decorate --oneline显示 切换分支 git checkout 分支名 合并分支 git merge 分支名 关于合并冲突问题 ...

最新文章

  1. 可构造样式表 - 通过javascript来生成css的新方式
  2. eclipse运行程序时只有run on server
  3. Docker数据卷管理
  4. Facebook Auth API文档中没说清楚的事情 (2011-02-28更新)
  5. 分布式任务队列 Celery — 应用基础
  6. 霸王洗发水经理被指冲击报社殴打记者
  7. Visual Studio扩展工具添加与卸载
  8. 不同网段的PC与交换机的原理
  9. CodeFirst的EF6迁移和时间戳错误
  10. 基于scikit-learn的朴素贝叶斯实战
  11. SQL2008数据库的备份与还原
  12. 接口测试工具-Jmeter使用笔记(五:正则表达式提取器)
  13. hdoj1116【欧拉回路】
  14. C#进制转换(二进制转十进制 十进制转16进制等)
  15. JS获取当前页面的URL参数
  16. 数据分析师系列课程 统计学基础1
  17. ios版的chrome如何保存网页为PDF
  18. Word自定义目录的设置
  19. 洪恩教育披露2020年报:学习服务收入大增,营销费、负债规模攀升
  20. Mac OS X常用软件介绍

热门文章

  1. 通过时间戳,计算距离下一个周二和周六的时间距离
  2. 获取指定日期所在周的每一天的日期(周一,周二,周三,周四,周五到周末 )
  3. js中鼠标滚轮事件详解
  4. Matlab画图魔法大全
  5. 使用node的辅助开发工具
  6. macOS/Linux 命令 - ssh、sshpass
  7. 网络安全笔记——第二天:简单了解操作系统
  8. strcpy函数和strcat函数的使用及实现
  9. 【深度学习】 自编码器(AutoEncoder)
  10. 华大HC32F460 MPU6050实验