一个 Git 库房常常有不同的分支,开发者能够在各个分支处理不同的特性,或许在不影响主代码库的情况下修复 bug。

库房一般有一个 master 或许 main 分支,表明主代码库。开发人员创立其他分支,处理不同的特性。

在项目的迭代过程中,咱们一般会在本地或长途创立很多分支。分支多了之后,管理很不方便,所以咱们或许会期望定期清理这些分支。

今天咱们将从删去本地分支删去长途分支批量删去本地分支三个方面介绍删去分支的一些办法。

删去本地分支

提到删去本地分支,大家首先想到的或许是下面这个:

git branch (-d|-D) <branch>

比方:git branch -d fix/authentication

假如你还在需求删去的分支上,那么 Git 是不答应你删去这个分支的。所以,请记住先切到其他分支:git checkout master

那么考一下大家,-d-D 有什么区别呢?咱们也不卖关子,直接解答:

  • -d 选项是 --delete 的别号,仅当分支已彻底兼并到其上游分支中时才会删去该分支。
  • -D 选项是 --delete --force的别号,答应删去分支,不管其兼并状况怎么。

所以,当一个分支被推送并兼并到长途分支后,-d 才会本地删去该分支。假如一个分支还没有被推送或许兼并,那么能够运用-D强制删去它。

删去长途分支

运用以下指令能够长途删去分支:

git push –delete <branch>

比方: git push origin --delete fix/authentication,这个分支就被长途删去了。

也能够运用这行简短的指令来长途删去分支:

git push <remote> :<branch>,

比方: git push origin :fix/authentication

假如你得到以下错误消息,或许是因为其他人现已删去了这个分支。

error: unable to push to unqualified destination: remoteBranchName The destination refspec neither matches an existing ref on the remote nor begins with refs/, and we are unable to guess a prefix based on the source ref. error: failed to push some refs to ‘git@repository_name’

那么咱们怎么将长途已删去的分支信息,同步到本地呢?

咱们能够运用以下指令同步分支列表:

git fetch -p

-pprune 的简写,意思是“精简”。

这样,你的分支列表里就不会显示已长途被删去的分支了。

批量删去本地分支

上面对删去本地分支的办法进行了介绍,当咱们本地的分支较多时,手动逐条删去就很费劲了。

这个时候,咱们就需求批量操作分支删去的指令。

  • 删去当时分支外的一切分支

git branch | xargs git branch -d

  • 删去分支名包含指定’dev’的分支

git branch | grep ‘xxx’ | xargs git branch -d

简略解释一下上面的指令:

  • | :管道指令,用于将一串指令串联起来。前面指令的输出能够作为后边指令的输入。
  • git branch:用于列出本地一切分支。
  • grep:查找过滤指令。运用正则表达式查找文本,并把匹配的行打印出来。
  • xargs:参数传递指令。用于将标准输入作为指令的参数传给下一个指令。

当然,你或许觉得假如我需求保存部分指定分支时,操作依然不太方便,那么能够运用下面这个办法:

git branch –merged |grep -v “*” | grep -v “release” > ./branch.txt

xargs git branch -d < ~/branch.txt

git branch --merged能够检查哪些分支现已兼并到当时分支,此列表下没有* 标记的分支能够删去,不会报错。

先经过上面的第一个指令,将一切本地现已兼并到当时分支的分支,写入到 branch.txt(排除release分支和当时分支) – 主张在release或许master分支履行。

然后咱们根据实际需求,编辑 branch.txt 文件,确认删去分支。再履行第二条指令,将 branch.txt 中列出的分支运用git branch -d指令进行删去。

上述操作指令简略明了,特别是经过自行编辑 branch.txt 文件,避免想要保存的分支被删去。

以上指令还能够持续简化,不过要注意不要删错了分支:

git branch –merged |grep -v “*” | grep -v “release” |xargs git branch -D

再说一次,xargs 指令配合 | 运用,能够将前一条指令的输出流向,作为后一条指令的参数输入。

最终

咱们今天介绍了运用 git 删去分支的一些办法,往后的文章中,也会介绍其他的 git 运用技巧,觉得本文有用的小同伴,能够帮助点在“在看”,让更多的朋友看到咱们的文章。

然后,给“前端面试题宝典”的辅导服务打下广告,现在有简历辅导模拟面试面试全流程辅导的增值服务,假如有感兴趣的同伴,能够联络小助手(微信号:interview-fe)了解概况哦~