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

发布于:2023-09-07 ⋅ 阅读:(136) ⋅ 点赞:(0)

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

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到