在 Git 中删除不再位于远程仓库中的本地分支

git 删除远端已经被删除然而本地还存在的分支

1. 修剪不在远程仓库上的跟踪分支

git remote prune origin
  • 如果git仓库将branch1被删除,可以用用git remote prune origin删除在本地电脑上的remotes/origin/branch1
    • git remote show origin可以看到下面所示,这样的可以通过git remote prune origin删除
      refs/remotes/origin/branch1         stale (use 'git remote prune' to remove)
      
  • 上述只针对Deletes stale references associated with <name>. 分支(stale为三个月没有提交的分支)
    branch1                    不会被删除
    branch2
    remotes/origin/branch1     删除这个
    remotes/origin/branch2
    

2. 本地分支尚未删除,要实现删除本地分支

git branch -vv | grep 'origin/.*: gone]' | awk '{print $1}' | xargs git branch -d

详解:

  • git branch -vv
    该命令显示本地所有分支关联的远程分支,本地存在但是远端不存在的分支为gone状态。
    branch1   ec2d1b1a [origin/branch1: gone] feat: ***
    branch2   cdc6092d [origin/branch2: behind 45] feat: ***
    branch3   e51edba2 [origin/branch3] Merge branch 'branch3' into dev
    
  • grep 'origin/.*: gone]'
    对于上述结果利用grep命令行语句查找gone得到:
    branch1   ec2d1b1a [origin/branch1: gone] feat: ***
    
  • awk '{print $1}'
  • 使用awk命令行语句分割上面结果
    branch1
    
  • xargs git branch -d
    上述过程得到远端已经删除本地还没删除的分支名称,在通过xargs将其作为参数传给下一个命令git branch -d
Deleted branch branch1 (was ec2d1b1a).

参考

git remote prune origin does not delete the local branch even if its upstream remote branch is deleted

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值