Я закончил с чем-то очень похожим на подход kcm . Я хотел что-то, что очистило бы все локальные ветви, которые отслеживали удаленную ветвь, в origin
, где удаленная ветвь была удалена (gone
). Я не хотел удалять локальные ветви, которые никогда не были настроены для отслеживания удаленной ветви (т.е. мои локальные ветви разработки). Также я хотел простую однострочную версию, которая просто использует git
или другие простые инструменты CLI вместо написания пользовательских скриптов. Я использовал биты grep
и awk
для создания этой простой команды, а затем добавил ее в качестве псевдонима в ~/.gitconfig
.
[alias]
prune-branches = !git remote prune origin && git branch -vv | grep ': gone]' | awk '{print $1}' | xargs -r git branch -D
Вот команда git config --global ...
для простого добавления этого как git prune-branches
:
git config --global alias.prune-branches '!git remote prune origin && git branch -vv | grep '"'"': gone]'"'"' | awk '"'"'{print $1}'"'"' | xargs -r git branch -d'
ПРИМЕЧАНИЕ: Как Маттео указал в своем предыдущем комментарии с другой стороны, использование флага -D
для git branch
может быть очень опасным. Итак, в команде config я использую опцию -d
для git branch
, а не -D
; Я использую -D
в моей реальной конфигурации. Я использую -D
, потому что я не хочу, чтобы Гит жаловался на неразделенные ветви, я просто хочу, чтобы они ушли. Вы можете также хотеть эту функциональность. Если это так, просто используйте -D
вместо -d
в конце этой команды конфигурации.