Как удалить ветку Git локально и удаленно? - PullRequest
15427 голосов
/ 05 января 2010

Я хочу удалить ветку как локально, так и удаленно.

Неудачные попытки удалить удаленную ветвь

$ git branch -d remotes/origin/bugfix
error: branch 'remotes/origin/bugfix' not found.

$ git branch -d origin/bugfix
error: branch 'origin/bugfix' not found.

$ git branch -rd origin/bugfix
Deleted remote branch origin/bugfix (was 2a14ef7).

$ git push
Everything up-to-date

$ git pull
From github.com:gituser/gitproject
* [new branch] bugfix -> origin/bugfix
Already up-to-date.

Что нужно сделать по-другому, чтобы успешно удалить remotes/origin/bugfix филиал как локально, так и удаленно?

Ответы [ 38 ]

163 голосов
/ 03 апреля 2013

Я использую следующее в моих Bash настройках:

alias git-shoot="git push origin --delete"

Тогда вы можете позвонить:

git-shoot branchname
128 голосов
/ 29 апреля 2013

С января 2013 года GitHub включил кнопку Удалить ветку рядом с каждой веткой на странице "Филиалы".

Соответствующее сообщение в блоге: Создание и удаление веток

124 голосов
/ 23 мая 2015

Удалить локально:

Чтобы удалить локальную ветку, вы можете использовать:

git branch -d <branch_name> 

Чтобы принудительно удалить ветку, используйте -D вместо -d.

git branch -D <branch_name>

Удалить удаленно:

Есть два варианта:

git push origin :branchname  

git push origin --delete branchname 

Я бы посоветовал вам использовать 2-й способ, поскольку он более интуитивен.

122 голосов
/ 15 января 2013

Если вы хотите выполнить оба этих шага с помощью одной команды, вы можете создать для нее псевдоним, добавив следующее к вашему ~/.gitconfig:

[alias]
    rmbranch = "!f(){ git branch -d ${1} && git push origin --delete ${1}; };f"

В качестве альтернативы, вы можете добавить это к вашей глобальной конфигурации из командной строки, используя

git config --global alias.rmbranch \
'!f(){ git branch -d ${1} && git push origin --delete ${1}; };f'

ПРИМЕЧАНИЕ : При использовании -d (строчная буква d) ветвь будет удалена, только если она была объединена. Чтобы принудительное удаление произошло, вам нужно использовать -D (заглавная D).

113 голосов
/ 04 января 2016

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

  • Оформить заказ в мастер-филиал - git checkout master

  • Удалить удаленную ветку - git push origin --delete <branch-name>

  • Удалить ваше местное отделение - git branch --delete <branch-name>

109 голосов
/ 12 марта 2013

Вы также можете сделать это, используя git remote prune origin

$ git remote prune origin
Pruning origin
URL: git@example.com/yourrepo.git
 * [pruned] origin/some-branchs

Удаляет и удаляет удаленные ветви из списка git branch -r.

104 голосов
/ 24 марта 2012

В дополнение к другим ответам я часто использую инструмент git_remote_branch . Это дополнительная установка, но она дает вам удобный способ взаимодействия с удаленными филиалами. В этом случае удалить:

grb delete branch

Я считаю, что я также довольно часто использую команды publish и track

93 голосов
/ 17 ноября 2016

Один вкладыш команда удаления как локальная, так и удаленная :

D=branch-name; git branch -D $D; git push origin :$D

или добавьте приведенный ниже псевдоним к вашему ~ / .gitconfig ;использование: git kill branch-name

[alias]
    kill = "!f(){ git branch -D \"$1\";  git push origin --delete \"$1\"; };f"
91 голосов
/ 30 октября 2015

Удаление ветвей

Давайте предположим, что наша работа над веткой "contact-form" завершена, и мы уже интегрировали ее в "master". Так как он нам больше не нужен, мы можем удалить его (локально):

$ git branch -d contact-form

А для удаления удаленной ветки:

git push origin --delete contact-form
86 голосов
/ 31 декабря 2015

Удалить удаленную ветку

git push origin :<branchname>

Удалить местное отделение

git branch -D <branchname>

Удалить шаги локальной ветки:

  1. оформить заказ в другой филиал
  2. удалить локальную ветку
...