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

Хотя создание и удаление веток в Git очень распространено, к сожалению, синтаксис не так-то легко запомнить всем. Даже будучи давним пользователем Git, мне нужно искать синтаксис в качестве напоминания, что, по общему признанию, на самом деле является основной мотивацией написания этой короткой статьи. В следующих двух разделах будет описано, как удалить ветки в Git как для локальных, так и для удаленных репозиториев, а также будут описаны некоторые альтернативные флаги и синтаксис. Удаление локальной ветки Это простая часть греха

Хотя создание и удаление веток в 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 .

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus