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

15099

Я хочу удалить ветвь как локально, так и в моей удаленной проектной вилке на GitHub.

Не удалось удалить удаленную ветвь

$ 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 как локально, так и на GitHub?

  • 868
    Примечание модератора. Если вы намереваетесь ответить на этот вопрос, учтите, что уже опубликовано 40 ответов. Будет ли ваш новый ответ добавить существенную ценность?
  • 48
    Примечание: для Git 2.5+ (2 квартал 2015 года) точное сообщение будет « deleted remote-tracking branch »: см. Github.com/git/git/commit/…
Теги:
git-branch
git-remote

40 ответов

17997
Лучший ответ

Управляющее резюме

$ git push --delete <remote_name> <branch_name>
$ git branch -d <branch_name>

Обратите внимание, что в большинстве случаев удаленное имя является origin.

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

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

$ git branch -d branch_name
$ git branch -D branch_name

Примечание. Параметр -d является псевдонимом для --delete, который удаляет ветвь только в том случае, если она уже полностью объединена с вышестоящей ветвью. Вы также можете использовать -d, который является псевдонимом для --delete --force, который удаляет ветку "независимо от ее объединенного статуса". [Источник: man git-branch ]

Удалить удаленную ветку [Обновлено 8 сентября 2017 года]

Начиная с Git v1.7.0, вы можете удалить удаленную ветку, используя

$ git push <remote_name> --delete <branch_name>

что может быть легче запомнить, чем

$ git push <remote_name> :<branch_name>

который был добавлен в Git v1.5.0 "для удаления удаленной ветки или тега".

Начиная с Git v2.8.0 вы также можете использовать git push с -d в качестве псевдонима для --delete.

Таким образом, версия Git, которую вы установили, будет определять, нужно ли вам использовать более простой или сложный синтаксис.

Удалить удаленную ветку [Оригинальный ответ от 5 января 2010]

Из главы 3 Pro Git Скотта Чакона:

Удаление удаленных веток

Предположим, что вы закончили с удаленной веткой - скажем, вы и ваши соавторы закончили с функцией и объединили ее с вашей главной веткой удаленных (или любой другой веткой, в которой находится ваша стабильная строка кода). Вы можете удалить удаленную ветку, используя довольно тупой синтаксис git push [remotename] :[branch]. Если вы хотите удалить ветку исправления сервера с сервера, выполните следующее:

$ git push origin :serverfix
To [email protected]:schacon/simplegit.git
 - [deleted]         serverfix

Boom. Нет больше ветки на вашем сервере. Возможно, вы захотите просмотреть эту страницу, потому что вам понадобится эта команда, и вы, скорее всего, забудете синтаксис. Чтобы запомнить эту команду, git push [remotename] [localbranch]:[remotebranch] синтаксис git push [remotename] [localbranch]:[remotebranch] который мы рассмотрели чуть ранее. Если вы [localbranch] часть [localbranch], то в основном говорите: "Ничего не бери на моей стороне и сделай его [remotebranch] ".

Я выпустил git push origin :bugfix и он работал прекрасно. Скотт Чакон был прав - я захочу выслушать эту страницу (или, фактически, собачье ухо, ответив на это в Переполнении стека).

Затем вы должны выполнить это на других машинах

git fetch --all --prune

распространять изменения.

  • 568
    Если вы знаете синтаксис git push origin local_branch:remote_branch , то синтаксис для удаления ветки с git push origin :remote_branch довольно симпатичен. Есть пустота перед :
  • 258
    Не забудьте выполнить git fetch --all --prune на других компьютерах после удаления удаленной ветви на сервере. ||| После удаления локальной ветки с помощью git branch -d и удаления удаленной ветки с помощью git push origin --delete других машинах могут git push origin --delete «устаревшие ветви отслеживания» (чтобы увидеть, как они выполняют git branch -a ). Чтобы избавиться от них, сделайте git fetch --all --prune .
Показать ещё 21 комментарий
2797

Ответ Matthew отлично подходит для удаления удаленных ветвей, и я также благодарен за объяснение, но для простого различия между двумя командами:

Чтобы удалить локальную ветвь с вашего устройства:

git branch -d {the_local_branch} (используйте -D вместо того, чтобы принудительно удалить ветвь без проверки объединенного состояния)

Чтобы удалить сервер удаленную ветвь с сервера:

git push origin --delete {the_remote_branch}

Ссылка: https://makandracards.com/makandra/621-git-delete-a-branch-local-or-remote

  • 232
    @megido well -D force удаляет, -d выдает предупреждение, если оно еще не слито.
  • 7
    Если ваша локальная ветвь не слилась с master и запустила 'git branch -d your_branch то вы увидите ошибку, похожую на error: The branch 'your_branch' is not fully merged. If you are sure you want to delete it, run 'git branch -D your_branch'.
Показать ещё 6 комментариев
1613

Краткие ответы

Если вы хотите получить более подробные объяснения следующих команд, см. длинные ответы в следующем разделе.

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

git push origin --delete <branch>  # Git version 1.7.0 or newer
git push origin :<branch>          # Git versions older than 1.7.0

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

git branch --delete <branch>
git branch -d <branch> # Shorter version
git branch -D <branch> # Force delete un-merged branches

Удаление локальной ветки удаленного отслеживания:

git branch --delete --remotes <remote>/<branch>
git branch -dr <remote>/<branch> # Shorter

git fetch <remote> --prune # Delete multiple obsolete tracking branches
git fetch <remote> -p      # Shorter

Длинный ответ: есть три разных ветки для удаления!

Когда вы имеете дело с удалением ветвей как локально, так и удаленно, имейте в виду, что задействованы 3 разных ветки:

  • Локальная ветвь X.
  • Удаленная ветвь происхождения X.
  • Локальная ветвь удаленного отслеживания origin/X, которая отслеживает удаленную ветвь X.

Изображение 7407

Оригинальный плакат, используемый

git branch -rd origin/bugfix

который удалил только локальную ветвь удаленного отслеживания origin/bugfix, а не фактическую удаленную ветвь bugfix на origin.

Изображение 7408

Чтобы удалить текущую удаленную ветвь, вам нужно

git push origin --delete bugfix

Изображение 7409

Дополнительные сведения

В следующих разделах описываются дополнительные сведения, которые следует учитывать при удалении ветвей удаленного и удаленного отслеживания.

Нажатие на удаление удаленных веток также удаляет ветки удаленного отслеживания

Обратите внимание, что удаление удаленной ветки X из командной строки с помощью git push также удалит локальную ветвь удаленного отслеживания origin/X, поэтому нет необходимости обрезать устаревшее ветвь удаленного отслеживания с git fetch --prune или git fetch -p, хотя это не повредит, если вы все равно это сделаете.

Вы можете проверить, что ветвь удаленного отслеживания origin/X также была удалена, выполнив следующее:

# View just remote-tracking branches
git branch --remotes
git branch -r

# View both strictly local as well as remote-tracking branches
git branch --all
git branch -a

Обрезка устаревшего локального источника удаленной отслеживания /X

Если вы не удалили удаленную ветвь X из командной строки (например, выше), то ваше местное репо все равно будет содержать (теперь устаревшую) ветку удаленного отслеживания origin/X. Это может произойти, если вы удалили удаленную ветку непосредственно через веб-интерфейс GitHub, например.

Типичный способ удаления этих устаревших ветвей удаленного отслеживания (начиная с Git версии 1.6.6) - просто запустить git fetch с --prune или короче -p. Обратите внимание, что это удаляет все устаревшие локальные ветки удаленного отслеживания для любых удаленных веток, которые больше не существуют на удаленном:

git fetch origin --prune
git fetch origin -p # Shorter

Вот соответствующая цитата из 1.6.6 примечания к выпуску (внимание мое):

"git fetch" узнал --all и --multiple параметры, чтобы запустить выборку из много репозиториев и --prune для удаления удаленного отслеживания ветки, которые стали устаревшими. Они делают "git удаленное обновление" и "gitудаленная чернослив" меньше необходимости (нет плана для удаления "удаленных обновление" или "удаленная обрезка" ).

Альтернативная автоматическая обрезка для устаревших ветвей удаленного отслеживания

В качестве альтернативы вместо обрезания устаревших локальных ветвей удаленного отслеживания через git fetch -p вы можете избежать дополнительной работы в сети, просто удалив ветвь (ветки) с помощью флагов --remote или -r:

git branch --delete --remotes origin/X
git branch -dr origin/X # Shorter

См. также

  • 0
    Из вашей иллюстрации видно, что существуют локальные репозитории клонов и репозитории с удаленным происхождением. Итак, есть как минимум две физические ветви. Где удалить третью ветку? Третья ветка - только указатель, указывающий на коммит в локальном репозитории клонов?
  • 5
    @ Huggie, это в значительной степени правильно. Ветви в Git - это просто закладки, прикрепленные к коммитам. Итак, на моих графиках выше есть закладки X и origin/X в локальном клоне (2 ветви), а затем X на удаленном (делающем 3 ветви).
Показать ещё 1 комментарий
914

Шаги по удалению ветки:

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

git push origin --delete <your_branch> 

Для удаления локальной ветки у вас есть три способа:

1: git branch -D <branch_name> 

2: git branch --delete --force <branch_name>  //same as -D

3: git branch --delete  <branch_name>         //error on unmerge

Объясните: хорошо, просто объясните, что здесь происходит!

Просто выполните git push origin --delete чтобы удалить ТОЛЬКО удаленную ветвь, добавьте имя ветки в конце, и это одновременно удалит и отправит ее на удаленную ветку...

Также, git branch -D, который просто удаляет ТОЛЬКО локальную ветку!...

-D обозначает --delete --force которая удаляет ветку, даже если она не объединена (принудительное удаление), но вы также можете использовать -D что обозначает --delete которая --delete ошибку, соответствующую состоянию слияния ветки...

Я также создаю изображение ниже, чтобы показать шаги:

Изображение 7410

  • 31
    git branch -a отобразит локальные и удаленные ветки. Это поможет вам представить схему.
  • 0
    обратите внимание, что если вы устанавливаете ветку, которую хотите удалить, вам необходимо извлечь ветку, отличную от той, которую нужно удалить (например, master), перед удалением локальной ветки.
719

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

git push --delete origin serverfix

Который делает то же самое, что и

git push origin :serverfix

но это может быть легче запомнить.

  • 0
    ... и безопаснее в использовании: O
  • 0
    Вы забыли часть об удалении локальной ветки, что можно сделать с помощью: git branch -d <local_branch> или git branch -D <local_branch> для принудительного удаления
350

Если вы хотите удалить ветвь, сначала выйдите в ветку, отличную от ветки, которую нужно удалить.

git checkout other_than_branch_to_be_deleted

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

git branch -D branch_to_be_deleted

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

git push origin --delete branch_to_be_deleted
322

Совет: при удалении веток с помощью

git branch -d <branchname> # deletes local branch

или же

git push origin :<branchname> # deletes remote branch

удаляются только ссылки. Несмотря на то, что ветка на самом деле удалена, ссылки на нее все еще существуют в локальных репозиториях членов вашей команды. Это означает, что для других членов команды удаленные ветки все еще видны, когда они делают git branch -a.

Чтобы решить эту проблему, члены вашей команды могут удалить удаленные ветки с помощью

git remote prune <repository>

Обычно это git remote prune origin.

  • 14
    Вы должны уточнить, что приведенная выше операция git push удаляет локальную ветвь и удаленную ветвь.
  • 18
    Обратите внимание, что git remote prune - это несколько устаревший способ удаления устаревших веток удаленного отслеживания, более новый способ сделать это - использовать git fetch --prune или git fetch -p .
Показать ещё 1 комментарий
262
git branch -D <name-of-branch>
git branch -D -r origin/<name-of-branch>
git push origin :<name-of-branch>
  • 6
    Обратите внимание , что -D заставляет удаление. Всегда лучше использовать -d , который будет напоминать, если вам нужно сделать что-то опасное.
  • 11
    ахахах :) все зависит от вас: используйте -d, если хотите видеть, как git плачет, или -D, если хотите плакать.
205

Это просто: просто запустите следующую команду:

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

git branch -d example

(здесь example - имя ветки)

И после этого удалите удаленную ветку с помощью команды:

git push origin :example
172

Другой подход:

git push --prune origin

ВНИМАНИЕ: Это удалит все удаленные ветки, которые не существуют локально. Или более всесторонне,

git push --mirror

эффективно сделает удаленный репозиторий похожим на локальную копию репозитория (локальные заголовки, пульты и теги отражаются на удаленном).

  • 0
    git push --prune origin ничего не сделал для меня на gitlab: git clone git: //repo.git; git branch -d -r origin / some-branch; git push - происхождение черны; доходность: все современное; мерзкий выбор; возвращает локально удаленные ветви; git push --mirror; теперь их действительно нет!
152

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

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

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

git-shoot branchname
  • 10
    В итоге я просто добавил псевдоним "стрелять" в мой .gitconfig shoot = push origin --delete
  • 0
    Если ваш источник - Atlassian Stash и ветвь установлена по умолчанию, вы получите сообщение об ошибке «По умолчанию удаление текущей ветки запрещено ...». Мне пришлось изменить ветку по умолчанию в Stash, чтобы указать другую ветку, прежде чем я мог удалить.
Показать ещё 1 комментарий
120

С января 2013 года GitHub включал кнопку Delete branch рядом с каждой веткой на странице "Ветви".

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

  • 1
    Я начал использовать Github только в этом году, поэтому мне было интересно, почему этот вопрос получил такой высокий рейтинг и почему ни один из лучших ответов не предлагал просто удалить его из веб-интерфейса Github! Интересно, что это только недавнее дополнение.
  • 4
    Я собирался указать на это. Обратите внимание, что кнопка не удалит вашу локальную ветку ... см. Этот ответ, чтобы узнать, как это сделать: stackoverflow.com/a/10999165/901641
117

Если вы хотите выполнить оба этих действия с помощью одной команды, вы можете сделать для нее псевдоним, добавив ниже к вашему ~/.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).

  • 4
    Это то, что я искал. Мой псевдоним функции оболочки не работал (Неожиданный EOF), и я не мог понять почему, но это прекрасно работает! Единственное изменение, которое я сделал, это замена && на ; так что даже если первая команда не будет выполнена, вторая все равно будет выполняться (иногда существует только локальная или только удаленная).
111

Чтобы удалить филиал локально и удаленно

  • Оформить покупку в ветке - git checkout master

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

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

98

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

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

git branch -d <branch_name> 

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

git branch -D <branch_name>

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

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

git push origin :branchname  

git push origin --delete branchname 

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

97

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

$ git remote prune origin
Pruning origin
URL: [email protected]/yourrepo.git
 * [pruned] origin/some-branchs

Он удаляет и удаляет ветки удаленного отслеживания из списка git branch -r.

95

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

grb delete branch

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

86

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

Предположим, что наша работа над веткой "контакт-форма" выполнена, и мы уже интегрировали ее в "мастер". Поскольку нам это больше не нужно, мы можем удалить его (локально):

$ git branch -d contact-form

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

git push origin --delete contact-form
84

Просто скажите:

git branch -d <branch-name>
git push origin :<branch-name>
  • 0
    Это работает, если это ваша собственная ветка. Но если вы убираете все ненужные ветки в репо (некоторые из которых не ваши), этого будет недостаточно
82

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

git push origin :<branchname>

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

git branch -D <branchname>

Удалить шаги локального перехода:

  • проверка на другую ветку
  • удалить локальную ветвь
  • 1
    Требуется ли для удаления удаленной ветки «git push»?
  • 0
    @SamithaChathuranga нет, git push origin :<branchname> уже отправляет «пустую» ветку на удаленную (следовательно, удаляет удаленную ветку)
81

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

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"
  • 15
    Carefully Тщательно используйте git branch -D в скрипте, так как он принудительно удаляет ветку без проверки того, что она была объединена. Используйте -d чтобы быть в безопасности.
76

Теперь вы можете сделать это с помощью приложения GitHub Desktop.

После запуска приложения

  • Нажмите проект, содержащий ветку
  • Перейдите к ветке, которую вы хотите удалить Изображение 7411
  • В меню "Отладка" выберите "Отменить публикацию...", чтобы ветвь удалилась с серверов GitHub. Изображение 7412
  • В меню "Ветка" выберите "Удалить" имя_каталога "...", чтобы ветвь удалилась с вашего локального компьютера (ака машина, над которой вы сейчас работаете) Изображение 7413
  • 14
    Я не отрицал, но я думаю, что это существенно не помогает. Очевидно, что вопрос заключается в том, чтобы запросить ответ типа командной строки без необходимости использования внешней программы. Если бы люди кликали сюда, они, скорее всего, не будут искать github для настольных систем.
  • 9
    @Demedeor, я не согласен. В 2010 году, когда ОП задал вопрос, пользовательского интерфейса не было, и единственным вариантом была командная строка. Чтобы указать, что вы хотите использовать параметр только для командной строки, это должно быть указано в вопросе или с тегом, интерфейс командной строки , которого в данном случае нет.
Показать ещё 1 комментарий
71
git push origin --delete <branch Name>

легче запомнить, чем

git push origin :branchName
68

Чтобы удалить локально - (Обычный),

git branch -d my_branch

Если ваша ветка в процессе восстановления/слияния и что это не было сделано правильно, вы получите сообщение об ошибке Rebase/Merge in progress, поэтому в этом случае вы не сможете удалить свою ветку.

Таким образом, либо ваша необходимость разрешать переполнение/слияние в противном случае вы можете принудительно удалить, используя

git branch -d my_branch

Чтобы удалить в Remote:

git push --delete origin my_branch

может использовать то же самое,

git push origin :my_branch   # easy to remember both will do the same.

Графическое представление

Изображение 7414

57

Это не будет работать, если у вас есть тег с тем же именем, что и ветка на пульте:

$ git push origin :branch-or-tag-name
error: dst refspec branch-or-tag-name matches more than one.
error: failed to push some refs to '[email protected]:SomeName/some-repo.git'

В этом случае вам нужно указать, что вы хотите удалить ветку, а не тег:

git push origin :refs/heads/branch-or-tag-name

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

git push origin :refs/tags/branch-or-tag-name
  • 0
    Это хорошо, но люди на самом деле не должны называть свои ветви и теги одинаковыми именами и одинаковой схемой именования.
  • 2
    Что ж, мой сценарий состоял в том, что я преобразовывал ветку в тег, и для этого тега имело то же имя, что и для ветви. Под преобразованием я подразумеваю объединение ветви B с A и маркирование последнего коммита в ветви B тегом B, чтобы после удаления ветви B его можно было легко восстановить, просто отметив тег B.
50

Мне досадно было заглянуть за этот ответ, поэтому я сделал аналогичный подход на ответ, который ранее опубликовал crizCraig

В мой профиль Bash добавлено следующее:

function gitdelete(){
    git push origin --delete $1
    git branch -D $1
}

Затем каждый раз, когда я делаю это с веткой (например, слияние в master), я запускаю в моем терминале следующее:

gitdelete my-branch-name

... который затем удаляет my-branch-name из origin как локально.

  • 7
    более --delete "$@" об этом - --delete "$@" и -D "$@" вместо $1 будут обрабатывать это для нескольких ветвей.
  • 2
    Я предлагаю сначала запустить git branch -d (с нижним регистром 'd'), чтобы убедиться, что изменения были объединены, а затем нажать push в случае успеха (вставьте && между командами)
45
git push origin :bugfix  # Deletes remote branch
git branch -d bugfix     # Must delete local branch manually

Если вы уверены, что хотите его удалить, запустите

git branch -D bugfix

Теперь очистка удаленных удаленных ветвей выполняется

git remote prune origin
45

Многие другие ответы приведут к ошибкам/предупреждениям. Этот подход является относительно git branch -D branch_to_delete хотя вам все еще может понадобиться git branch -D branch_to_delete если он не полностью слит, например, в some_other_branch.

git checkout some_other_branch
git push origin :branch_to_delete
git branch -d branch_to_delete

Удаленное удаление не требуется, если вы удалили удаленную ветку. Он использовался только для получения самых современных пультов дистанционного управления, доступных в отслеживаемом вами хранилище. Я заметил, что git fetch добавит пульты, а не удалит их. Вот пример того, когда git remote prune origin действительно что-то сделает:

Пользователь А выполняет шаги, описанные выше. Пользователь B будет запускать следующие команды, чтобы увидеть самые последние удаленные ветки

git fetch
git remote prune origin
git branch -r
42

Перед выполнением

git branch --delete <branch>

убедитесь, что вы сначала определили, что такое EXACT имя удаленной ветки, выполнив:

git ls-remote

Это скажет вам, что вводить ТОЧНО для значения <branch>. (branch чувствителен к регистру!)

41

Mashup всех других ответов. Требуется Ruby 1.9.3+, протестировано только на OS X.

Назовите этот файл git-remove, сделайте его исполняемым и поместите его по своему пути. Затем используйте, например, git remove temp.

#!/usr/bin/env ruby
require 'io/console'

if __FILE__ == $0
      branch_name = ARGV[0] if (ARGV[0])
      print "Press Y to force delete local and remote branch #{branch_name}..."
    response = STDIN.getch
    if ['Y', 'y', 'yes'].include?(response)
      puts "\nContinuing."
      'git branch -D #{branch_name}'
      'git branch -D -r origin/#{branch_name}'
      'git push origin --delete #{branch_name}' 
    else
      puts "\nQuitting."
    end
end
  • 2
    одна буква любезно предоставлена этим ответом: stackoverflow.com/a/8072675/8047
  • 0
    @chhh, тогда вам нужно расширить эту функциональность, чтобы сделать ее переменной, а не предположением.
Показать ещё 3 комментария
38

Я добавил следующие псевдонимы в мой файл .gitconfig. Это позволяет мне удалять ветки с указанием имени ветки или без нее. Имя ветки по умолчанию совпадает с текущей веткой, если аргумент не передан.

[alias]
    branch-name = rev-parse --abbrev-ref HEAD     

    rm-remote-branch = !"f() { branch=${1-$(git branch-name)}; git push origin :$branch; }; f"
    rm-local-branch = !"f() { branch=${1-$(git branch-name)}; git checkout master; git branch -d $branch; }; f"
    rm-branch-fully = !"f() { branch=${1-$(git branch-name)}; git rm-local-branch $branch; git rm-remote-branch $branch; }; f"
  • 6
    Будьте осторожны с опцией de -D . В пакете рассмотрите использование более низкого -d
  • 0
    В моем случае я почти всегда удаляю после слияния (или без необходимости слияния). Используя нижний -d потребуется ветвь быть объединена перед удалением, используя -D силы удаления ветви.
32

Альтернативным вариантом командной строки для удаления удаленных веток является страница GitHub branch.

См. например: https://github.com/angular/angular.js/branches

Найдено на странице CodeBranches репозитория GitHub.

Я обычно предпочитаю командную строку, но эта страница GitHub показывает вам больше информации о ветвях, таких как последняя обновленная дата и пользователь, а количество берет вперед и отстает. Это полезно при работе с большим количеством ветвей.

29

У меня также были подобные проблемы, и это, похоже, работает: Это удаляет локальную ветвь. git branch -d the_local_branch

Удаление удаленной ветки git push origin :the_remote_branch

Источник: Карты Макандры

27

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

branch_not_delete=( "master" "develop" "our-branch-1" "our-branch-2")


for branch in `git branch -a | grep remotes | grep -v HEAD | grep -v master`; do

    # delete prefix remotes/origin/ from branch name
    branch_name="$(awk '{gsub("remotes/origin/", "");print}' <<< $branch)"

    if ! [[ " ${branch_not_delete[*]} " == *" $branch_name "* ]]; then
        # delete branch remotly and locally
        git push origin :$branch_name
    fi
done 
  • Список ветвей, которые вы не хотите удалять
  • Итерации по ветки удаленных объектов, и если они не находятся в нашем "списке сохранения", мы удалили.

Источник: removing-git-branches-at-once

  • 0
    Как мне запустить этот скрипт? Спасибо
22

Используя GitBash, вы можете выполнить следующее:

git branch --delete <branch>

ИЛИ

Из рабочего стола GitHub, когда вы проверили ответвление, вы можете удалить ветвь Локальная через полосу меню ветки:

Изображение 7415

Если вы используете ARE NOT с помощью рабочего стола GitHub и используете IDE, например Visual Studio для вашего локального элемента управления, все, что вам нужно сделать, это сделать несколько быстрых шагов:

  • Отметьте ветку, отличную от той, которую вы хотите удалить.
  • Щелкните правой кнопкой мыши ветку, которую вы хотите удалить.
  • В контекстном меню выберите параметр Удалить.

Затем, после входа в свою учетную запись GitHub в Интернете, перейдите в репозиторий и перейдите на вкладку Все ветки. Оттуда просто щелкните значок маленькой корзины справа от имени брака, который вы хотите удалить.

Изображение 7416

* Имейте в виду - если ветка не опубликована, нет необходимости пытаться удалить ее из своего онлайн-репозитория.

  • 0
    Я не вижу вкладки « Overview , « Yours , « Active , « State и « All branches » на веб-сайте GitHub. Похоже, это старый снимок. На вкладке « Code отображаются вложенные вкладки, такие как коммиты, ветки, релизы и участники. Когда я являюсь владельцем репозитория, я вижу дополнительную вкладку с именем MIT.
  • 0
    git branch --delete <branch> не удаляет удаленную ветку, для этого вам нужно git push <server> --delete <branch>
20

В соответствии с последним документом, использующим терминал, мы можем удалить следующий путь.

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

git branch -D usermanagement

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

git push --delete origin usermanagement
19

Я создал следующую удобную функцию в файле.bash_aliases:

git-delete-branch() 
{ 
    if [[ -n $1 ]]; then
        git checkout master > /dev/null;
        branch_name="$1";
        echo "Deleting local $branch_name branch...";
        git branch -D "$branch_name";
        echo "Deleting remote $branch_name branch...";
        git push origin --delete "$branch_name";
        git remote prune origin;
        echo "Your current branches are:";
        git branch -a;
    else
        echo "Usage: git-delete-branch <branch_name>";
    fi
}
17

Его очень простая

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

git push -d origin <branch-name>

ИЛИ

git push origin :<branch-name>

Чтобы удалить локальную ветвь

git branch -D <branch-name>
  • 1
    Мне нужно было использовать --delete вместо -d чтобы удалить удаленную ветку.
  • 0
    Опция -d является псевдонимом для --delete и если --delete работает, то -d также должен работать, если вы хотите удалить ветку, вы можете использовать -D вместо -d или --delete .
10

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

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

Затем вы можете позвонить:

git-shoot branchname
-12

Эти команды работают лучше всего для меня:

git branch -D <branch name>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню