Хотя создание и удаление веток в Git очень распространено, к сожалению, синтаксис не так-то легко запомнить всем. Даже будучи давним пользователем Git, мне нужно искать синтаксис в качестве напоминания, что, по общему признанию, на самом деле является основной мотивацией написания этой короткой статьи.
В следующих двух разделах будет описано, как удалить ветки в Git как для локальных, так и для удаленных репозиториев, а также будут описаны некоторые альтернативные флаги и синтаксис.
Удаление локального филиала
Это простая часть, поскольку вы просто работаете с репозиторием Git, которым вы (предположительно) владеете и которым управляете. Вот команда, которая вам, вероятно, понадобится:
$ git branch -d <local_branch>
Здесь параметр -d
указывает Git удалить указанную ветку и фактически
является псевдонимом для флага --delete
Другой альтернативой является
использование -D
, что приводит к принудительному удалению и является
псевдонимом для --delete --force
:
$ git branch -D <local_branch>
Это приведет к удалению ветки, даже если она еще не объединена, так что
имейте это в виду при ее использовании. В общем, вам следует
использовать параметр -d
так как он считается более безопасным.
Еще одно замечание - вы не можете удалить ветку, которая в настоящее
время проверена, даже с параметром -D
, который мы показываем здесь с
веткой issue-260
$ git checkout issue-260
Switched to branch 'issue-260'
$ git branch -D issue-260
error: Cannot delete branch 'issue-260' checked out at '/Users/scott/projects/git-examples'
Сначала проверьте другую ветку, например master
или ветку dev, а затем
удалите ее:
$ git checkout master
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.
$ git branch -d issue-260
Deleted branch issue-260 (was 3acde55).
Теперь мы можем удалить ветку без проблем.
Удаление удаленного филиала
Удаление удаленной ветки немного сложнее, чем удаление локальной, поскольку вы работаете с репозиторием, которого, скорее всего, нет даже на вашем компьютере. Синтаксис, который вы можете использовать, также зависит от вашей версии Git, поэтому обратите внимание.
$ git push <remote_repo> --delete <remote_branch>
Это было добавлено в Git в v1.7.0, а в Git v2.8.0 они добавили
возможность использовать -d
вместо полного флага --delete
Показанный выше формат, на мой взгляд, является наиболее простым для запоминания синтаксисом. Но если у вас более старая версия Git (v1.5.0 +), вам нужно будет использовать это вместо:
$ git push <remote_repo> :<remote_branch>
Чтобы запомнить это, Скотт Чакон очень хорошо описывает это в своей книге :
Чтобы запомнить эту команду, можно
git push [remotename] [localbranch]:[remotebranch]
который мы рассмотрели немного ранее. Если вы[localbranch]
, то вы в основном говорите: «Ничего не принимайте с моей стороны и сделайте это[remotebranch]
».
Теперь, когда ветка удалена из удаленного репозитория, другие машины
также захотят обновить себя. Для этого они захотят fetch
обновление:
$ git fetch --all --prune
Параметр --prune
указывает Git удалить все ссылки удаленного
отслеживания (то есть нашу ветку), которые больше не существуют в
удаленном репо. Однако имейте в виду, что это сокращение не применяется
к тегам. Для этого вы захотите использовать --prune-tags
.