回答
基於@pankijs答案,我做了兩個混帳別名:
[alias]
# Delete all local branches but master and the current one, only if they are fully merged with master.
br-delete-useless = "!f(){\
git branch | grep -v "master" | grep -v ^* | xargs git branch -d;\
}; f"
# Delete all local branches but master and the current one.
br-delete-useless-force = "!f(){\
git branch | grep -v "master" | grep -v ^* | xargs git branch -D;\
}; f"
要~/.gitconfig
而添加,作爲@torek指出:
請注意,小寫字母
-d
不會刪除「未完全合併」的麩皮ch(請參閱文檔)。使用-D
將刪除這些分支,即使這會導致提交變爲「丟失」; 使用這個非常謹慎,因爲這也刪除分支reflogs,以便通常的「從意外刪除」東西也不起作用。
基本上,從來沒有使用-force
版本,如果你不是300%肯定你不會失去任何重要的東西。因爲它永遠丟失。
提交到一個被刪除的分支應該仍然在reflog中一段時間 – CaptRespect 2017-11-16 18:53:20
確實,提交會停留在reflog中,但不是分支本身,但是我想你可能會發現你的提交,但回到分支狀態?我懷疑是這樣的。Cherry-pick可以用來檢索已刪除分支中的提交,但是你將無法恢復分支本身。 – Vadorequest 2018-02-19 23:28:44
git branch -d
(或-D
)允許多個分支名稱,但它是一個有點棘手自動提供「除了我現在正在使用的所有分支機構之外,所有地方分支機構「都沒有寫入至少一點代碼。
「最佳」(正式名稱是正確的)方法是使用git for-each-ref
得到分支名稱:
git for-each-ref --format '%(refname:short)' refs/heads
但隨後弄清楚你是在哪個分支更難(git symbolic-ref HEAD
是「正式正確的「方法,如果你想寫一個奇特的腳本)。
更方便的是,您可以使用git branch
,它打印您的本地分支名稱前面有兩個空格或(對於當前分支)以星號*
打印。所以,通過一些運行此刪除*
版本,留給你的空間分隔的分支名稱,然後你就可以傳遞給git branch -d
:
git branch -d $(git branch | grep -v '^*')
或:
git branch | grep -v '^*' | xargs git branch -d
注意小寫-d
不會刪除「非完全合併」分支(請參閱文檔)。使用-D
將刪除這些分支,即使這會導致提交變爲「丟失」;請謹慎使用它,因爲這也會刪除分支reflog,以便通常的「從意外刪除中恢復」的東西也不起作用。
要刪除所有分支合併(除了當前-v ‘*’
):
git branch --merged | grep -v '*' | xargs git branch -D
我也回購完成清理做了這樣的命令:
alias git-clean="git branch | grep -v '*' | grep -v 'master' | xargs git branch -D && git reset --hard && git clean -d -x -f"
從here拍攝。
- 1. 我可以關閉當前分支嗎?
- 2. 我可以刪除父分支嗎?
- 3. gitolite可以防止分支刪除嗎?
- 4. 我可以刪除舊的git分支
- 5. 我可以從git倉庫中刪除整個分支嗎?
- 6. 我可以刪除xxxxxxxAreaRegistration.cs嗎?
- 7. 我可以刪除flashlogs.txt嗎?
- 8. 刪除除分支以外的所有DOM兒童PHP
- 9. 我應該刪除合併分支嗎?
- 10. 我可以從ACTIVEMQ_MSGS表中刪除所有數據嗎?
- 11. 我可以刪除所有行,但只保留一行嗎?
- 12. tf402455當我刪除功能分支
- 13. 刪除分支後可以看到svn分支歷史記錄嗎?
- 14. 可以將mercurial rebase刪除一個分支嗎?
- 15. 如何刪除當前視圖以外的所有子視圖
- 16. 刪除li以外的所有ul,但當前li
- 17. 刪除文件,只有當所有的可刪除 - 饒無辜
- 18. 我可以刪除gh-pages分支子模塊中的本地主分支
- 19. 我可以刪除php5的「error_log.txt」嗎?
- 20. 使用'gitweb'風格顯示所有分支。我可以只顯示所需的分支數量嗎?
- 21. Team Foundation Server 2010:我可以刪除分支,但保存其歷史嗎?
- 22. 爲什麼git worktree添加了創建分支,我可以刪除它嗎?
- 23. 我們可以刪除/清除以前設置的標籤到視圖嗎?
- 24. 我可以隱藏所有遠程克隆的git倉庫中的分支嗎?
- 25. 我可以查詢當前範圍嗎?
- 26. 我們可以在合併更改後刪除分支
- 27. 我可以在GitHub中看到合併功能分支的所有提交嗎?
- 28. 在Git中,我可以查看分支合併中的所有提交嗎?
- 29. 我可以讓readProcess刪除引號嗎?
- 30. 我們可以刪除ES6課程嗎?
[刪除所有本地git分支](http://stackoverflow.com/questions/10610327/delete-all-local-git-branches) – 2015-02-18 00:38:11
可能的重複[如何刪除所有本地git分支但保留大師與一個命令行?](http://stackoverflow.com/questions/25112684/how-to-remove-all-local-git-branches-but-keep-master-with-one-command-line) – random 2015-02-18 01:41:15
可能[如何刪除所有已合併的git分支?](https://stackoverflow.com/questions/6127328/how-can-i-delete-all-git-branches-which-have-been-merged ) – 2017-08-01 09:11:43