Git之删除本地无用分支

随着项目迭代越来越久,本地会创建一系列分支,太多了有时候找起来也不方便,就想将一些已经删除的远程分支对应的本地分支清理掉 (我们会对gitlab上已经merged的分支定期清理,毕竟图形化界面操作起来也方便)
在这里插入图片描述

清除已删除远程分支
git fetch -p  

其作用就是如果你通过git fetch 获取了远程分支,后面远程的分支又被删除了,就可以通过该命令来删除那么已经被清除的远程分支;如果你在获取远程分支的时候同时创建了一个本地分支,那么该命令只能帮你解除本地分支和远程分支的关联性,并不会将本地分支也删除掉

在这里插入图片描述

git remote prune origin

上述命令的效果同git fetch -p

那么想要真正删除这些烦人的无用本地分支要怎么做呢?

逐个删除(最笨)

通过git branch 命令可以查看所有的本地分支,然后通过git branch -d命令一个个删除

git branch 
git branch -d <branchName>

git branch -d 删除分支,会在删除前检查merge状态,避免误删没有合并的分支。
git branch -D 是git branch --delete --force的简写,它会强制删除该分支。
如果想要删除远程分支以及追踪分支需使用: git push --origin -delete branch

批量删除
/d/IdeaProjects/my-service (master)
$ git branch --merged |grep -v "\*" | grep -v "release" > d:/branch.txt

/d/IdeaProjects/my-service (master)
$ xargs git branch -d < d:/branch.txt
Deleted branch feature_dev2 (was 0e24efa).

通过第一个命令将所有本地的且已合并到当前分支的分支写入到branch.txt(排除release分支和当前分支) – 建议在release或者master分支执行
然后根据获取到的branch执行git branch -d命令删除

上述操作命令简单明了,还可以根据获得到的branch.txt自行删除自己想要保留的分支

可以简化成如下命令,不过要注意不要删错了分支:

  git branch --merged |grep -v "\*" | grep -v "release" |xargs git branch -D

xargs 命令配合 | 使用,将前一条指令的输出流向会作为后一条指令的参数输入。
在这里插入图片描述
还可以写成shell脚本

#!/bin/bash
  branches=`git branch --merged |grep -v "\*" | grep -v "release"` ;# 获取分支名
  echo  $branches;
  for branch in $branches
  do
  `git branch -d $branch`;
  echo  delete branch $branch;
  done;
c函数
import os

def delete_not_merged_branch():
    result = os.popen("git branch --merged")
    git_branches = result.read()
    for git_branch in git_branches.splitlines():
        if git_branch != '* release':
            print(git_branch)
            os.system('git branch -d ' + git_branch)

参考资料:
what-does-git-fetch-p-means
remove-tracking-branches-no-longer-on-remote

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值