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

本文介绍如何使用Git命令查看本地及远程分支,并通过执行特定命令清除那些远程仓库中已被删除但本地仍有记录的分支。

使用 git branch -a 命令可以查看所有本地分支和远程分支(git branch -r 可以只查看远程分支)
发现很多在远程仓库已经删除的分支在本地依然可以看到。

$ git branch -a

  movtop
  task_develop
* weibo
  remotes/origin/HEAD -> origin/task_develop
  remotes/origin/develop
  remotes/origin/fix_composer_repositories_type
  remotes/origin/join_weixin_module
  remotes/origin/master
  remotes/origin/mining-backup
  remotes/origin/movtop
  remotes/origin/right
  remotes/origin/schedule_dev
  remotes/origin/stuff_web_fix
  remotes/origin/task_develop
  remotes/origin/task_idea
  remotes/origin/task_temp
  remotes/origin/task_yqj
  remotes/origin/weibo
  remotes/origin/weixin_temp

使用命令 git remote show origin,可以查看remote地址,远程分支,还有本地分支与之相对应关系等信息。

$ git remote show origin  

* remote origin
  Fetch URL: https://xxx@gitlab.com/xxx/xxx.git
  Push  URL: https://xxx@gitlab.com/xxx/xxx.git
  HEAD branch: task_develop
  Remote branches:
    master                                             tracked
    mining-backup                                      tracked
    refs/remotes/origin/develop                        stale (use 'git remote prune' to remove)
    refs/remotes/origin/fix_composer_repositories_type stale (use 'git remote prune' to remove)
    refs/remotes/origin/join_weixin_module             stale (use 'git remote prune' to remove)
    refs/remotes/origin/movtop                         stale (use 'git remote prune' to remove)
    refs/remotes/origin/right                          stale (use 'git remote prune' to remove)
    refs/remotes/origin/schedule_dev                   stale (use 'git remote prune' to remove)
    refs/remotes/origin/stuff_web_fix                  stale (use 'git remote prune' to remove)
    refs/remotes/origin/task_temp                      stale (use 'git remote prune' to remove)
    refs/remotes/origin/weibo                          stale (use 'git remote prune' to remove)
    task_develop                                       tracked
    task_idea                                          tracked
    task_yqj                                           tracked
    weixin_temp                                        tracked
  Local branches configured for 'git pull':
    movtop       merges with remote movtop
    task_develop merges with remote task_develop
    weibo        merges with remote weibo
  Local ref configured for 'git push':
    task_develop pushes to task_develop (up to date)

此时我们可以看到那些远程仓库已经不存在的分支,根据提示,使用 git remote prune origin 命令:

$ git remote prune origin

Pruning origin
URL: https://xxx@gitlab.com/xxx/xxx.git
 * [pruned] origin/develop
 * [pruned] origin/fix_composer_repositories_type
 * [pruned] origin/join_weixin_module
 * [pruned] origin/movtop
 * [pruned] origin/right
 * [pruned] origin/schedule_dev
 * [pruned] origin/stuff_web_fix
 * [pruned] origin/task_temp
 * [pruned] origin/weibo

这样就删除了那些远程仓库不存在的分支。

<think>根据用户输入的内容 "git branch -a 本地分支远程分支名",这似乎是一个不完整的命令或格式错误。在Git中,`git branch -a` 用于列出所有分支(包括本地远程分支),但后续的“本地分支远程分支名”不符合标准语法。 标准用法: - `git branch -a` 单独使用,显示所有分支列表,远程分支以 `remotes/` 开头。 - 若要创建基于远程分支本地分支,正确命令是:`git checkout -b <本地分支名> <远程分支名>` - 或使用:`git branch <本地分支名> <远程分支名>` 因此,推测用户可能想表达如何基于远程分支创建本地分支。以下是正确方法和解释: **正确指令示例:** ```bash # 创建并切换到新本地分支,跟踪指定远程分支 git checkout -b 本地分支远程分支名 # 或仅创建分支但不切换(需后续手动切换) git branch 本地分支远程分支名 ``` **注意事项:** 1. 远程分支名格式通常为 `origin/分支名`(如 `origin/main`)。 2. 使用 `git checkout -b` 会自动建立本地分支远程分支的追踪关系(tracking),后续可直接 `git push` 和 `git pull`。 3. 单独使用 `git branch` 创建分支时,需手动设置追踪关系: ```bash git branch --set-upstream-to=远程分支本地分支名 ``` §§相关问题§§1. 如何查看Git本地分支远程分支的追踪关系?2. 如何切换到一个已存在的本地分支?3. 删除本地分支远程分支的命令分别是什么?4. `git checkout -b` 和 `git switch -c` 的区别是什么?5. 如何重命名一个本地分支? </think>在 Git 中,`git branch -a` 命令用于**列出所有分支(包括本地远程分支)**,但您提供的 `git branch -a 本地分支远程分支名` 格式不正确。正确的操作应分为两步: ### 1. **查看所有分支**(确认远程分支存在) ```bash git branch -a ``` 这会显示: ``` * main # 当前本地分支 feature # 其他本地分支 remotes/origin/main # 远程分支 remotes/origin/dev # 远程分支 ``` ### 2. **基于远程分支创建本地分支**(正确语法) ```bash git checkout -b 本地分支远程分支名 ``` 示例:将远程的 `origin/dev` 同步为本地分支 `dev` ```bash git checkout -b dev origin/dev ``` 这会: 1. 创建新本地分支 `dev` 2. 自动关联远程分支 `origin/dev` 3. 切换到新分支 ### 关键说明 - **远程分支名格式**:必须是 `origin/分支名`(如 `origin/main`) -本地分支已存在,需先删除: ```bash git branch -D 旧分支名 # 强制删除本地分支 ``` - 验证关联关系: ```bash git branch -vv # 查看本地分支远程分支的追踪关系 ```
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值