38 Вопрос: Как удалить ветку Git локально и удаленно?

вопрос создан в Sat, Jun 15, 2019 12:00 AM

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

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

 
$ 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 филиал как локально, так и удаленно?

    
15386
  1. Примечание для модератора. Если вы намереваетесь ответить на этот вопрос, обратите внимание, что уже опубликовано 40 ответов. Добавит ли ваш новый ответ какую-либо существенную ценность?
    2014-06-11 16: 10: 42Z
  2. Примечание. Для Git 2.5+ (2 квартал 2015 года) точное сообщение будет " deleted remote-tracking branch ": см. githubita/> github.com/
    2015-05-25 14: 57: 35Z
  3. Боже мой, я просто хочу знать, сколько очков ОП получил за этот вопрос?
    2019-06-13 19: 19: 53Z
  4. 30 ответов                              30                         

    Резюме

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

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

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

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

     
    $ 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 git@github.com:schacon/simplegit.git
     - [deleted]         serverfix
    
         

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

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

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

     
    git fetch --all --prune
    

    для распространения изменений.

        
    19267
    2018-12-13 04: 45: 54Z
    1. Если вы знаете синтаксис git push origin local_branch:remote_branch, то синтаксисудалить ветку с git push origin :remote_branch довольно мило. До : есть пустота
      2012-05-11 04: 05: 03Z
    2. Не забудьте сделать git fetch --all --prune на других машинах после удаления удаленной ветви на сервере. ||| После удаления локальной ветви с git branch -d и удаления удаленной ветви с git push origin --delete на других машинах все еще могут быть «устаревшие ветви отслеживания» (чтобы увидеть их, выполните git branch -a). Чтобы избавиться от них, сделайте git fetch --all --prune.
      2015-05-27 16: 51: 36Z
    3. В дополнение к git branch -a @ TrevorBoydSmith для просмотра всех ветвей, вы также можете использовать git branch -r только для просмотра удаленных ветвей. см. также git remote show origin - источник: gitready.com/intermediate/2009/02/13 /список-дистанционного branches.html
      2015-09-09 09: 53: 18Z
    4. Мне пришлось запустить git branch -D Branch_Name, чтобы избавиться от локальной ветви
      2016-03-10 01: 32: 06Z
    5. @ KolobCanyon Вы должны использовать -D, только если ветвь не была объединена с другой ветвью.
      2016-04-05 16: 27: 15Z

    Ответ Мэтью отлично подходит для удаления веток удаленных , и я также ценю объяснение, но для того, чтобы провести простое различие между двумя командами:

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

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

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

    git push origin --delete {the_remote_branch}

    Ссылка: https://makandracards.com/makandra /621-ГИТ-удалить-а-ветвь локального или удаленного-

        
    3040
    2017-12-18 12: 33: 13Z
    1. @ megido well -D принудительно удаляет, -d выдает предупреждение, если оно еще не объединено.
      2014-11-06 19: 04: 59Z
    2. Если ваша локальная ветвь не слилась с 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'.
      2015-10-31 12: 59: 14Z
    3. Я бы предложил использовать -d вместо -D, потому что это безопаснее. Если -d не удается из-за неутвержденных коммитов, вам нужно оценить это, и если удаление определенно возможно, используйте -D.
      2016-02-02 03: 47: 57Z
    4. Другие с клонами репозитория, у которых удаленные ветви были удалены, должны запустить git remote prune <name> (например, git remote prune origin), чтобы локально удалить устаревшие ветви, которых больше нет в удаленном.
      2016-04-18 23: 07: 39Z
    5. Я хотел бы добавить, что -d выдает предупреждение, если оно не объединено с текущим HEAD. Если вам нужна ясность, я рекомендую эту команду git branch -a --merged origin/master В ней будут перечислены все ветви, как локальные, так и удаленные; которые были объединены в мастера. Дополнительная информация здесь
      2017-02-10 13: 10: 57Z

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

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

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

     
    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 разных ветки для удаления!

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

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

    Визуализация трех ветвей

    Используется оригинальный постер

     
    git branch -rd origin/bugfix
    

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

    Диаграмма 2

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

     
    git push origin --delete bugfix
    

    Диаграмма 3

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

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

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

    Обратите внимание, что удаление удаленной ветви 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 remote update" и "git   удаленный чернослив "менее необходимо (нет плана удалить" удаленный   обновить ", ни" удаленного удаления ", хотя).

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

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

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

    Смотрите также

    1760
    2016-03-10 12: 20: 26Z
    1. Из вашей иллюстрации видно, что существуют локальные репозитории клонов и репозитории с удаленным источником. Итак, есть как минимум две физические ветви. Где третья ветка удалить? Является ли третья ветвь только указателем, указывающим на коммит в локальном репозитории клонов?
      2016-02-18 02: 00: 40Z
    2. @ huggie, это в значительной степени правильно. Ветви в Git - это просто закладки, прикрепленные к коммитам. Итак, на моих графиках выше, в локальном клоне есть X и origin/X закладок (2 ветви), а затем X на удаленном (3 ветви).
      2016-02-23 07: 33: 42Z
    3. + 1 для удаленной ветви отслеживания. Эта ветка вызывает проблемы, когда вы клонируете чужую ветку. Он продолжает отслеживать ваши коммиты и спрашивать вас, хотите ли вы перейти на ветку этого человека.
      2017-06-21 19: 48: 20Z

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

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

     
    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, которые выдают ошибку, соответствующую состоянию слияния ветви ...

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

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

        
    1321
    2019-03-22 07: 08: 35Z
    1. git branch -a отобразит локальные и удаленные ветви. Это поможет вам представить схему.
      2017-07-27 03: 01: 39Z
    2. обратите внимание, что если вы устанавливаете ветку, которую хотите удалить, перед извлечением вы должны извлечь ветку, отличную от той, которую нужно удалить (например, master) местное отделение.
      2018-05-28 08: 43: 55Z
    3. Когда ветви удаляются в источнике, ваш локальный репозиторий не заметит этого. У вас все еще будут локально кэшированные версии этих веток (что на самом деле хорошо), но git branch -a все равно перечислит их как удаленные ветки. Вы можете очистить эту информацию локально следующим образом: git remote prune origin Ваши локальные копии удаленных ветвей не удаляются этим. Тот же эффект достигается при использовании git fetch --prune
      2019-05-08 06: 33: 45Z

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

     
    git push --delete origin serverfix
    

    Что делает то же самое, что и

     
    git push origin :serverfix
    

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

        
    753
    2018-12-13 04: 44: 17Z
    1. ... и безопаснее использовать: O
      2017-11-29 07: 31: 21Z
    2. Вы забыли часть об удалении локальной ветви, которую можно сделать: git branch -d <local_branch> или git branch -D <local_branch> для принудительного удаления
      2018-02-14 04: 23: 55Z

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

     
    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.

        
    360
    2018-12-13 04: 44: 30Z
    1. Следует пояснить, что указанная выше операция git push удаляет локальную ветвь и удаленную ветвь.
      2013-05-21 13: 51: 46Z
    2. Обратите внимание, что git remote prune - это несколько устаревший способ удаления устаревших удаленных веток, новыеr способ сделать это - использовать git fetch --prune или git fetch -p.
      2014-06-11 16: 30: 04Z
    3. @ RRMadhav, действительно, вы не увидите удаленную ветку после ее удаления, поскольку ссылка на удаленную ветку будет удалена для вас локально. Любой другой член вашей команды, который проверил эту ветку, все еще будет иметь эту ссылку и будет видеть ее, пока не удалит ветку.
      2014-12-05 14: 27: 38Z

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

     
    git checkout other_than_branch_to_be_deleted
    

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

     
    git branch -D branch_to_be_deleted
    

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

     
    git push origin --delete branch_to_be_deleted
    
        
    359
    2015-06-09 02: 04: 02Z
     
    git branch -D <name-of-branch>
    git branch -D -r origin/<name-of-branch>
    git push origin :<name-of-branch>
    
        
    259
    2014-08-08 20: 04: 03Z
    1. Обратите внимание, что -D принудительно удаляет. Всегда лучше использовать -d, который будет напоминать, если вам нужно сделать что-то опасное.
      2015-01-10 01: 08: 57Z
    2. ахахах :) это ваше дело: используйте -d, если вы хотите, чтобы git плакал, или -D, если вы хотите плакать.
      2015-02-13 11: 21: 07Z

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

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

     
    git branch -d example
    

    (здесь example - название ветви)

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

     
    git push origin :example
    
        
    221
    2015-06-09 02: 03: 14Z

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

     
    git push --prune origin
    

    ПРЕДУПРЕЖДЕНИЕ: Это удалит все удаленные ветви, которые не существуют локально. Или более подробно,

     
    git push --mirror
    

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

        
    192
    2018-12-13 04: 44: 03Z
    1. git push --prune origin ничего не сделал для меня в gitlab: git clone git: //repo.git; git branch -d -r origin /some-branch; git push - происхождение черны; доходность: все современное; мерзкий выбор; возвращает локально удаленные ветви; git push --mirror; теперь их действительно нет!
      2015-10-08 16: 46: 25Z

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

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

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

     
    git-shoot branchname
    
        
    163
    2018-12-13 04: 43: 53Z
    1. В итоге я просто добавил псевдоним "стрелять" в мой .gitconfig shoot = push origin --delete
      2014-12-04 18: 06: 37Z
    2. Если ваш источник - Atlassian Stash и ветвь установлена ​​по умолчанию, вы получите сообщение об ошибке "По умолчанию удаление tтекущая ветка запрещена ... ". Мне пришлось изменить ветку по умолчанию в Stash, чтобы она указала на другую ветку, прежде чем я смог удалить.
      2014-12-12 00: 29: 35Z
    3. Это очень просто, как вы это сделали, но Fyi Git также позволяет вам делать пользовательские команды. Поместите git push origin --delete $1 в файл на вашем пути с именем git-shoot, и git shoot branchname тоже будет работать.
      2015-10-14 07: 09: 31Z

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

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

        
    128
    2018-12-13 04: 42: 21Z
    1. Я только начал использовать Github в этом году, поэтому мне было интересно, почему это вопрос с таким высоким рейтингом, и почему ни один из лучших ответов не предлагал просто удалить его из веб-интерфейс Github! Интересно, что это только недавнее дополнение.
      2013-09-11 12: 18: 54Z
    2. Я собирался указать на это. Обратите внимание, что эта кнопка не удалит вашу локальную ветку ... см. Этот ответ, чтобы узнать, как это сделать: stackoverflow.com/a/10999165 /901641
      2013-10-29 14: 02: 45Z

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

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

     
    git branch -d <branch_name> 
    

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

     
    git branch -D <branch_name>
    

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

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

     
    git push origin :branchname  
    
    git push origin --delete branchname 
    

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

        
    123
    2018-12-13 04: 45: 05Z

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

        
    121
    2014-06-11 16: 26: 17Z
    1. Это то, что я искал. Мой псевдоним функции оболочки не работал (Неожиданный EOF), и я не мог понять почему, но это прекрасно работает! Единственное изменение, которое я сделал, - это замена && на ;, чтобы даже в случае сбоя первой команды вторая все равно выполнялась (иногда существует только локальная или только удаленная).
      2014-12-16 08: 55: 29Z

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

    • Оформить заказ на главную ветку - git checkout master

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

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

    113
    2017-12-13 22: 10: 51Z

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

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

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

        
    108
    2018-12-13 04: 43: 19Z

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

     
    grb delete branch
    

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

        
    104
    2018-12-13 04: 41: 10Z

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

    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"
    
        
    93
    2017-01-15 08: 30: 43Z
    1. carefully Тщательно используйте git branch -D в скрипте, поскольку он принудительно удаляет ветку, не проверяя ее слияние. Используйте -d, чтобы быть в безопасности.
      2017-03-13 14: 05: 07Z

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

      

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

     
    $ git branch -d contact-form
    

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

     
    git push origin --delete contact-form
    
        
    91
    2015-11-18 19: 51: 13Z

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

    git push origin :<branchname>

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

    git branch -D <branchname>

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

    1. оформить заказ в другой филиал
    2. удалить локальную ветку
    86
    2016-02-19 18: 05: 46Z
    1. Требует ли удаленное удаление ветки "git push" впоследствии?
      2016-02-17 08: 32: 54Z
    2. @ SamithaChathuranga no, git push origin :<branchname> уже отправляет «пустую» ветку на удаленную (следовательно, удаляет удаленную ветку)
      2017-06-09 22: 20: 55Z

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

     
    git branch -d <branch-name>
    git push origin :<branch-name>
    
        
    85
    2016-06-25 12: 52: 01Z
    1. Это работает, если это ваша собственная ветка. Но если вы удалите все ненужные ветви в репо (некоторые из которых не ваши), этого будет недостаточно
      2016-06-30 22: 23: 07Z
     
    git push origin --delete <branch Name>
    

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

     
    git push origin :branchName
    
        
    80
    2018-12-13 04: 44: 45Z

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

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

    1. Нажмите на проект, содержащий ветку
    2. Переключитесь на ветку, которую вы хотите удалить  ветвь переключения
    3. В меню «Ветка» выберите «Отменить публикацию ...», чтобы удалить ветку с серверов GitHub. отменить публикацию ветви
    4. В меню «Филиал» выберите «Удалить» имя_в ветви «...», чтобы удалить ветку с вашего локального компьютера (или компьютера, на котором вы сейчас работаете) удалить локальную ветку
    79
    2016-12-16 03: 58: 50Z
    1. Я не понизил голос, но я думаю, что это существенно не помогает. Очевидно, что вопрос заключается в том, чтобы запросить ответ типа командной строки, не используя внешнюю программу. Если люди нажмут здесь, они, скорее всего, не будут искать github для настольных систем.
      2015-11-06 11: 51: 15Z
    2. @ Daemedeor, я не согласен. В 2010 году, когда ОП задал вопрос, пользовательского интерфейса не было, и единственным вариантом была командная строка. Чтобы указать, что вы хотите использовать параметр только для командной строки, это должно быть указано в вопросе или с тегом командной строки- интерфейс , которого в данном случае нет.
      2015-11-06 16: 00: 39Z
    3. Команда git для удаления удаленной ветви - отстой, и я склонен ее забывать (как новую, так и старую). К счастью, есть инструменты с графическим интерфейсом, которые имеют такую ​​возможность. У Git Gui, TortoiseGit и GitHub Desktop это есть - я бы хотел, чтобы у Git Extensions была и эта функциональность. В любом случае, я помню, как запускать Git Gui из Git Extensions, когда мне нужно удалить удаленную ветку.
      2016-03-25 21: 59: 21Z

    Удалить локально - (обычное),

     
    git branch -d my_branch
    

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

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

     
    git branch -D my_branch
    

    Удалить в удаленном режиме:

     
    git push --delete origin my_branch
    

    может сделать то же самое, используя

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

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

     введите описание изображения здесь

        
    73
    2017-11-19 10: 24: 03Z

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

     
    $ 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 'git@github.com:SomeName/some-repo.git'
    

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

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

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

     
    git push origin :refs/tags/branch-or-tag-name
    
        
    65
    2018-12-13 04: 43: 05Z
    1. Это нормально, но люди на самом деле не должны называть свои ветви и теги одинаковыми именами и одинаковой схемой именования.
      2014-07-29 10: 00: 02Z
    2. Что ж, мой сценарий состоял в том, что я преобразовывал ветку в тег, и для этого тега имело то же имя, что и для ветви. Под преобразованием я подразумеваю объединение ветви B с A и маркирование последнего коммита в ветви B тегом B, чтобы после удаления ветви B его можно было легко восстановить.просто отметьте тег B.
      2014-07-30 11: 59: 10Z

    Многие другие ответы приведут к ошибкам /предупреждениям. Этот подход является относительно надежным, хотя вам может понадобиться 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 действительно что-то сделает:

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

     
    git fetch
    git remote prune origin
    git branch -r
    
        
    51
    2018-12-13 04: 41: 37Z

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

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

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

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

     
    gitdelete my-branch-name
    

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

        
    49
    2017-05-23 12: 34: 58Z
    1. в этом случае --delete "$@" и -D "$@" вместо $1 будут обрабатывать его для нескольких ветвей.
      2016-06-27 13: 15: 19Z
    2. Я предлагаю сначала запустить git branch -d (с нижним регистром 'd'), чтобы убедиться, что изменения были объединены, а затем нажать в случае успеха (поместите && между командами)
      2016-07-19 14: 17: 45Z

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

     
    git branch --delete <branch>
    

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

     
    git ls-remote
    

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

        
    45
    2016-06-25 12: 56: 09Z
     
    git push origin :bugfix  # Deletes remote branch
    git branch -d bugfix     # Must delete local branch manually
    

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

     
    git branch -D bugfix
    

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

     
    git remote prune origin
    
        
    44
    2016-04-21 16: 49: 36Z

    Мешап из всех остальных ответов. Требуется 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
    
        
    43
    2018-12-13 04: 42: 35Z
    1. одна буква, любезно предоставьте этот ответ: stackoverflow.com/a/8072675/8047
      2013-11-19 21: 04: 12Z
    2. @ chhh, тогда вам нужно расширить эту функциональность, чтобы сделать ее переменной, а не предположением.
      2014-12-05 16: 44: 44Z
    3. извините, но установить Ruby для такой работы? Более логичной является реализация на bash, которая будет работать «из коробки».
      2015-05-21 19: 37: 04Z
    4. @ Reishin Ruby устанавливается на коробке точно так же, как Bash, по крайней мере на OSX. Пожалуйста, смотрите: stackoverflow.com/questions/2342894/… , где SO отклонил эту тему как основанную на мнениях.
      2015-05-21 20: 03: 07Z
    5. @ Яр. Эта ссылка находится вне контекста и имеет более широкий охват. Я говорю только о git, и поскольку тема создана не только для OSX, выбор странен для других систем (например, * UNIX, Windows)
      2015-05-21 20: 33: 30Z
источник размещен Вот