удалить ветки не на удаленном

21
задан Dozer 16 May 2013 в 14:33
поделиться

1 ответ

Я закончил с чем-то очень похожим на подход 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 в конце этой команды конфигурации.

1
ответ дан Karl Wilbur 16 May 2013 в 14:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: