隨著專案迭代越來越久,本地會建立一系列分支,太多了有時候找起來也不方便,就想將一些已經刪除的遠端分支對應的本地分支清理掉 (我們會對gitlab上已經merged的分支定期清理,畢竟圖形化介面操作起來也方便)
清除已刪除遠端分支
git fetch -p
其作用就是如果你通過git fetch 獲取了遠端分支,後面遠端的分支又被刪除了,就可以通過該命令來刪除那麼已經被清除的遠端分支;如果你在獲取遠端分支的時候同時建立了乙個本地分支,那麼該命令只能幫你解除本地分支和遠端分支的關聯性,並不會將本地分支也刪除掉
git remote prune origin
上述命令的效果同git fetch -p那麼想要真正刪除這些煩人的無用本地分支要怎麼做呢?
逐個刪除(最笨)
通過git branch 命令可以檢視所有的本地分支,然後通過git branch -d命令乙個個刪除
git branch
git branch -d
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
$branchesdo`
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
git刪除本地分支和刪除遠端分支
切換分支的時候命令打錯了,git checkout 後面沒有跟分支名,結果git status,很多delete的檔案,直接冒冷汗,git add commit 之後發現本地與遠端確實是刪除了很多檔案,之前也有過一次,當時是從新換了乙個目錄重新拉 麻煩的很 把情況告訴了同事,給了我建議,刪除這個分支...
Git刪除本地多個分支
如果你本地有很多分支,需要批量刪除本地分支 可以使用如下方法,如果大家覺得不錯,請點贊支援一下。要刪除本地,首先要考慮以下三點 1 列出所有本地分支 2 搜尋目標分支如 所有含有 dev 的分支 3 將搜尋出的結果傳給刪除函式 具體例子如下 1 強制刪除所有分支 慎用,有些本地修改你可能沒有提交 g...
git刪除本地分支命令 Git已刪除分支回退方案
對於已刪除的分支,如果要想回退恢復,具體操作舉例說明一下 假如我們從master切出乙個新的分支 tempbranch,在tempbranch分支上做了一些修改後,最後一次的commit資訊如下 提交完成後,我們將分支切回master,然後將tempbranch分支刪除 git checkout m...