удаление удаленной ветки под названием checkout, которая была создана случайно [дублировать]

В Java, когда оператор «==» используется для сравнения двух объектов, он проверяет, ссылаются ли объекты на одно и то же место в памяти. Другими словами, он проверяет, являются ли имена двух объектов в основном ссылками на одно и то же место в памяти.

Класс Java String фактически переопределяет реализацию equals () по умолчанию в классе Object и переопределяет этот метод, чтобы он проверял только значения строк, а не их местоположения в памяти. Это означает, что если вы вызываете метод equals () для сравнения двух объектов String, то, пока действительная последовательность символов равна, оба объекта считаются равными.

Оператор == проверяет, являются ли две строки точно одним и тем же объектом.

Метод .equals() проверяет, имеют ли две строки одно и то же значение.

13895
задан Mateusz Piotrowski 24 December 2017 в 15:11
поделиться

25 ответов

Резюме

$ 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-Sep-2017]

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

$ 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- Jan-2010]

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

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

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

$ 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, и он работал красиво. Скотт Чакон был прав - я захочу собачьей ушной этой страницы (или фактически уха собаки, ответив на это в Stack & nbsp; Overflow).

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

git fetch --all --prune

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

17306
ответ дан alpha_989 17 August 2018 в 10:18
поделиться
  • 1
    Если вы знаете синтаксис git push origin local_branch:remote_branch, синтаксис для удаления ветви с git push origin :remote_branch является довольно симпатичным. Перед : есть пустота, – Marc-André Lafortune 11 May 2012 в 05:05
  • 2
    Не забудьте сделать git fetch --all --prune на других машинах после удаления удаленной ветви на сервере. ||| После удаления локальной ветви с помощью git branch -d и удаления удаленной ветви с помощью git push origin --delete другие машины могут все еще иметь «устаревшие ветви отслеживания», (чтобы увидеть, что они делают git branch -a). Чтобы избавиться от них, сделайте git fetch --all --prune. – Trevor Boyd Smith 27 May 2015 в 16:51
  • 3
    в дополнение к @ TrevorBoydSmith's git branch -a для просмотра всех ветвей, вы также можете использовать git branch -r для просмотра только удаленных филиалов. см. также git remote show origin - источник: gitready.com/intermediate/2009/02/13/list-remote-branches.html – Sandra 9 September 2015 в 09:53
  • 4
    Мне пришлось запустить git branch -D Branch_Name, чтобы избавиться от локальной ветви – Kolob Canyon 10 March 2016 в 02:32
  • 5
    @KolobCanyon Вам нужно использовать только -D, если ветвь не была объединена в другую ветку. – BTRUE 5 April 2016 в 16:27

Для удаления Locally - (Normal),

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.

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

69
ответ дан Alex Weitz 17 August 2018 в 10:18
поделиться

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

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

115
ответ дан Amal Murali 17 August 2018 в 10:18
поделиться
  • 1
    Я только начал использовать Github в этом году, поэтому мне было интересно, почему это был такой вопрос с высоким рейтингом, и почему ни один из главных ответов не предлагал просто удалить его из веб-интерфейса Github! Интересно, что это всего лишь недавнее дополнение. – Cam Jackson 11 September 2013 в 13:18
  • 2
    Я собирался указать на это. Обратите внимание, что кнопка не удалит вашу локальную ветвь ... см. Этот ответ, как это сделать: stackoverflow.com/a/10999165/901641 – ArtOfWarfare 29 October 2013 в 16:02

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

$ 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
58
ответ дан Amiramix 17 August 2018 в 10:18
поделиться
  • 1
    Это прекрасно, но люди действительно не должны называть свои ветки и теги одним и тем же именем и одной и той же схемой наименования. – user 29 July 2014 в 11:00
  • 2
    Что ж, мой сценарий состоял в том, что я конвертировал ветку в тег, и для тега имело смысл иметь то же имя, что и ветка. При преобразовании я подразумеваю объединение ветви B в A и пометку последнего фиксации в ветви B с тегом B, чтобы после удаления ветви B его можно было легко восстановить, просто проверив тег B. – Amiramix 30 July 2014 в 12:59
git push origin --delete branchName

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

git push origin :branchName
65
ответ дан Benjamin Hodgson 17 August 2018 в 10:18
поделиться

Многие другие ответы приведут к ошибкам / предупреждениям. Этот подход является относительно безумным, хотя вам все еще может понадобиться 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
45
ответ дан Brandon Cook 17 August 2018 в 10:18
поделиться

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

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

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

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

gitdelete my-branch-name

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

45
ответ дан Community 17 August 2018 в 10:18
поделиться
  • 1
    расширяясь на этом, --delete "$@" и -D "$@" вместо $1 будут обрабатывать его для нескольких ветвей. – kunl 27 June 2016 в 13:15
  • 2
    Сначала я предлагаю запустить git branch -d (с нижним регистром «d»), чтобы убедиться, что изменения были объединены, а затем нажмите, если успешно (поставьте && между командами) – bryn 19 July 2016 в 14:17

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
39
ответ дан Dan Rosenstark 17 August 2018 в 10:18
поделиться
  • 1
    однобуквенный любезно предоставит этот ответ: stackoverflow.com/a/8072675/8047 – Dan Rosenstark 19 November 2013 в 23:04
  • 2
    @chhh, тогда вам нужно расширить эту функциональность, чтобы сделать эту переменную вместо предположения. – Dan Rosenstark 5 December 2014 в 17:44
  • 3
    извините, но установите Ruby для такой работы? Более логичным является реализация на bash, которая будет работать из коробки. – Reishin 21 May 2015 в 19:37
  • 4
    @Reishin Ruby установлен на коробке так же, как Bash, по крайней мере, на OSX. См. stackoverflow.com/questions/2342894/… , где эта тема была отброшена как основанная на мнениях SO. – Dan Rosenstark 21 May 2015 в 20:03
  • 5
    @Yar эта ссылка выходит из контекста и имеет более широкий охват. Я рассказываю только о git, и поскольку тема не возникает только для OSX, этот выбор странный для других систем (например, * UNIX, Windows) – Reishin 21 May 2015 в 20:33

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

  • Оформить покупку в мастер-ветке - git checkout master
  • Удалить удаленную ветку - git push origin --delete <branch-name>
  • Удалите локальную ветвь - git branch --delete <branch-name>
101
ответ дан dippas 17 August 2018 в 10:18
поделиться

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

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

  1. Нажмите проект, содержащий ветку
  2. Переключиться на ветвь, которую вы хотите удалить
  3. В меню «Ветка» выберите «Отменить публикацию ...», чтобы удалить ветвь с серверов GitHub.
  4. В меню «Ветка» выберите «Удалить» имя_издателя «...», чтобы ветвь удалилась с вашей локальной машины (ака машина, над которой вы сейчас работаете)
73
ответ дан Eric 17 August 2018 в 10:18
поделиться
  • 1
    Я не спускал вниз, но я думаю, что это не помогает. Вопрос в том, что, очевидно, запрашивается более ответ на тип командной строки без необходимости использовать внешнюю программу, если люди нажимают сюда, они, вероятно, не будут искать github для настольных способов. – Daemedeor 6 November 2015 в 12:51
  • 2
    @Daemedeor, я не согласен. В 2010 году, когда ОП задал вопрос, пользовательский интерфейс этого не существовал, и единственным вариантом была командная строка. Чтобы указать, что вам нужен только параметр командной строки, он должен быть указан в вопросе или с тегом командной строки , который в этом случае отсутствует. – Eric 6 November 2015 в 17:00
  • 3
    Это именно то, что я тоже искал, документация Github Desktop даже не упоминает об этой функции, и именно здесь я оказался в поиске ответа на вопрос о том, что он делает. Это может быть не «ответ», но это полезно. – Daniel 5 December 2015 в 05:00
  • 4
    Команда git для удаления удаленной ветки засасывает, и я склонен забывать ее (как новую, так и старую). К счастью, есть инструменты GUI, которые имеют возможность. Git Gui, TortoiseGit и GitHub Desktop - я хочу, чтобы Git Extensions также имела эту функциональность. Во всяком случае, я помню, чтобы начать Git Gui изнутри Git Extensions, когда мне нужно удалить удаленную ветку. – vezenkov 25 March 2016 в 22:59
git branch -D <name-of-branch>
git branch -D -r origin/<name-of-branch>
git push origin :<name-of-branch>
247
ответ дан Felipe 17 August 2018 в 10:18
поделиться
  • 1
    Обратите внимание, что -D заставляет удалить. Всегда лучше использовать -d, что будет напоминать, если вам нужно сделать что-то опасное. – Jonathon Reinhart 10 January 2015 в 02:08
  • 2
    ahahah :) это зависит от вас: используйте -d, если вы хотите увидеть git crying или -D, если хотите плакать. – Felipe 13 February 2015 в 12:21

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

git push origin :<branchname>

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

git branch -D <branchname>

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

  1. проверка другой ветви
  2. удалить локальную ветвь
79
ответ дан jayxhj 17 August 2018 в 10:18
поделиться
  • 1
    Требуется ли удаление удаленной ветви "git push & quot; потом? – Samitha Chathuranga 17 February 2016 в 09:32
  • 2
    @SamithaChathuranga no, git push origin :<branchname> уже подталкивает пустую ветвь к удаленному устройству (поэтому удаляет удаленную ветку) – Michał Szajbe 9 June 2017 в 22:20

Другим подходом является

git push --prune origin

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

git push --mirror

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

177
ответ дан Jonathon Reinhart 17 August 2018 в 10:18
поделиться
  • 1
    git push --prune origin выглядит опасным ... – Nate 28 June 2013 в 23:37
  • 2
    git push --prune origin ничего не сделал для меня на gitlab: git clone git: //repo.git; git branch -d -r origin / some-branch; git push - правое начало; дает: все актуальное; git fetch; возвращает локально удаленные ветви; git push --mirror; теперь они действительно ушли! – eMBee 8 October 2015 в 16:46

Шаги для удаления ветви:

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

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

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

929
ответ дан Nawaz 17 August 2018 в 10:18
поделиться
  • 1
    git branch -a отобразит локальные и удаленные ветки. Это поможет вам ввести диаграмму. – LoranceChen 27 July 2017 в 03:01
  • 2
    обратите внимание, что если вы устанавливаете ветку, которую хотите удалить, перед удалением локальной ветви необходимо проверить ветку, отличную от той, которую вы хотите удалить (например: мастер). – BaDr Amer 28 May 2018 в 08:43
  • 3
    [off topic] как вы создали вышеупомянутое потрясающее изображение? – Lucas Caton 21 June 2018 в 07:24

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

git branch --delete <branch>

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

git ls-remote

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

703
ответ дан Peter Mortensen 17 August 2018 в 10:18
поделиться
  • 1
    Вы должны пояснить, что приведенная выше операция git push удаляет локальную ветвь и удаленной ветви. – Annika Backstrom 21 May 2013 в 14:51
  • 2
    Обратите внимание, что git remote prune является несколько устаревшим способом удаления устаревших ветвей удаленного отслеживания, более новый способ сделать это - использовать git fetch --prune или git fetch -p. – user 11 June 2014 в 17:30
  • 3
    В итоге я просто добавил псевдоним & quot; в мой .gitconfig shoot = push origin --delete – hdost 4 December 2014 в 19:06
  • 4
    @RRMadhav, вы не увидите удаленную ветку после ее удаления, так как ссылка на удаленную ветку будет удалена для вас локально. Кто-либо еще из вашей команды, который проверил, что ветка все еще будет иметь эту ссылку, будет по-прежнему видеть ее, если они не обрезают ветку. – pfrenssen 5 December 2014 в 15:27
  • 5
    Если ваше происхождение является Atlassian Stash, а ветка установлена ​​как значение по умолчанию, вы получите сообщение об ошибке «По умолчанию удаление текущей ветви запрещено ...». Мне пришлось изменить ветвь по умолчанию в Stash, чтобы указать на другую ветку, прежде чем я смогу удалить. – neoscribe 12 December 2014 в 01:29
  • 6
    Это совершенно просто, как вы это сделали, но fyi git также позволяет создавать пользовательские команды. Положите git push origin --delete $1 в файл на вашем пути с именем git-shoot и git shoot branchname. – mahemoff 14 October 2015 в 07:09
  • 7
    Это работает, если это ваша собственная ветка. Но если вы обрезаете все ненужные ветви в репо (некоторые из которых не ваши), этого будет недостаточно – Kermit_ice_tea 30 June 2016 в 22:23
  • 8
    ... и безопаснее использовать: O – cst1992 29 November 2017 в 08:31
  • 9
    Вы забыли часть об удалении локальной ветви, которая может быть выполнена с помощью: git branch -d <local_branch> или git branch -D <local_branch> для удаления силы – Amit Dash 14 February 2018 в 05:23

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

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

git branch -d branch_name 

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

git branch -D branch_name

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

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

git push origin :branchname  

git push origin --delete branchname 

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

99
ответ дан Rahul Gupta 17 August 2018 в 10:18
поделиться

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

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

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

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

git push origin --delete {the_remote_branch}

Ссылка: https://makandracards.com/makandra/621-git-delete-a-branch- локальный или удаленный-

2875
ответ дан Rin Minase 17 August 2018 в 10:18
поделиться
  • 1
    @megido well -D force удаляет, -d дает вам предупреждение, если оно еще не слито. – TankorSmash 6 November 2014 в 20:04
  • 2
    Если ваша локальная ветвь не объединяется с мастером и не запускается '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'. – geeks 31 October 2015 в 13:59
  • 3
    Я бы предложил использовать -d вместо -D, потому что это безопаснее. Если -d не удалось из-за невостребованных коммитов, тогда вам нужно оценить это, и если он определенно готов удалить, то используйте -D. – rooby 2 February 2016 в 04:47
  • 4
    Другие с клонами репозитория, где удаленные ветви удалены, должны запускать git remote prune <name> (например, git remote prune origin), чтобы локально удалять старые ветви, которые больше не существуют на пульте дистанционного управления. – code_dredd 18 April 2016 в 23:07
  • 5
    Если ваша ветка в вашей вилке (не всегда происхождение), используйте соответствующий репозиторий. например git push myRepo: mrbranchtodelete – Dhanuka777 19 May 2016 в 00:53

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

108
ответ дан Ryan Kohn 17 August 2018 в 10:18
поделиться
  • 1
    Это то, что я искал. Мой собственный псевдоним функции оболочки не работал (Неожиданный EOF), и я не мог понять, почему, но это отлично работает! Единственное изменение, которое я внес, заключалось в замене && на ;, так что даже если первая команда завершится неудачно, вторая будет выполняться (иногда только локальная или только удаленная существует). – user1021726 16 December 2014 в 09:55

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

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

$ git branch -d contact-form

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

git push origin --delete contact-form
83
ответ дан Ulysses Alves 17 August 2018 в 10:18
поделиться

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

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

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

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 разных ветви:

  1. Локальная ветвь X.
  2. Фиксация удаленного источника X.
  3. Локальная ветвь удаленного отслеживания origin/X, которая отслеживает удаленное отделение X.

Visualization of 3 branches [/g12]

Исходный плакат использовал

git branch -rd origin/bugfix

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

Diagram 2 [/g13]

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

git push origin --delete bugfix

Diagram 3 [/g14]

Дополнительная информация

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

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

Обратите внимание, что удаление удаленной ветви 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

Обрезка устаревшего локального пульта дистанционного управления -tracking origin origin / 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» ​​learn --all и --multiple опции, чтобы запустить выборку из многих репозиториев и --prune для удаления удаленных ветвей отслеживания, которые пошли несвежий. Они делают «git remote update» и «git remote prune» менее необходимым (нет плана удаления «удаленного обновления» или «удаленной обрезки», хотя).

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

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

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

См. также

1642
ответ дан Valentin Lorentz 17 August 2018 в 10:18
поделиться
  • 1
    С вашей иллюстрации я вижу, что существует локальное репликатор-репозиторий и репозиторий удаленного происхождения. Таким образом, есть как минимум две физические ветви. Где удалить третью ветку? Является ли третья ветвь только указателем, указывающим на фиксацию в локальном репо? – huggie 18 February 2016 в 03:00
  • 2
    @huggie, это очень правильно. Филиалы в Git - это только закладки, прикрепленные к фиксации. Таким образом, в моих графиках выше есть X и origin/X закладки в локальном клоне (2 ветки), а затем на пульте есть X (создание 3 ветвей). – user 23 February 2016 в 08:33
  • 3
    +1 для удаленной ветви отслеживания. Эта ветка вызывает проблемы, когда вы клонируете чужую ветку. Он продолжает отслеживать ваши коммиты и спрашивает вас, хотите ли вы нажать на филиал этого человека. – Kermit_ice_tea 21 June 2017 в 19:48

Одна команда 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"
80
ответ дан Vinnie James 17 August 2018 в 10:18
поделиться
  • 1
    ⚠️ Используйте git branch -D внимательно в скрипте, поскольку он принудительно удаляет ветвь без проверки ее объединения. Используйте -d, чтобы быть в безопасности. – caesarsol 13 March 2017 в 15:05
git push origin :bugfix  # Deletes remote branch
git branch -d bugfix     # Must delete local branch manually

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

git branch -D bugfix

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

git remote prune origin
41
ответ дан Vivek 17 August 2018 в 10:18
поделиться

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

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

git branch -d example

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

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

git push origin :example
343
ответ дан Willem Van Onsem 17 August 2018 в 10:18
поделиться

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

git branch -d <branch-name>
git push origin :<branch-name>
703
ответ дан Peter Mortensen 17 August 2018 в 10:18
поделиться
  • 1
    Вы должны пояснить, что приведенная выше операция git push удаляет локальную ветвь и удаленной ветви. – Annika Backstrom 21 May 2013 в 14:51
  • 2
    Обратите внимание, что git remote prune является несколько устаревшим способом удаления устаревших ветвей удаленного отслеживания, более новый способ сделать это - использовать git fetch --prune или git fetch -p. – user 11 June 2014 в 17:30
  • 3
    В итоге я просто добавил псевдоним & quot; в мой .gitconfig shoot = push origin --delete – hdost 4 December 2014 в 19:06
  • 4
    @RRMadhav, вы не увидите удаленную ветку после ее удаления, так как ссылка на удаленную ветку будет удалена для вас локально. Кто-либо еще из вашей команды, который проверил, что ветка все еще будет иметь эту ссылку, будет по-прежнему видеть ее, если они не обрезают ветку. – pfrenssen 5 December 2014 в 15:27
  • 5
    Если ваше происхождение является Atlassian Stash, а ветка установлена ​​как значение по умолчанию, вы получите сообщение об ошибке «По умолчанию удаление текущей ветви запрещено ...». Мне пришлось изменить ветвь по умолчанию в Stash, чтобы указать на другую ветку, прежде чем я смогу удалить. – neoscribe 12 December 2014 в 01:29
  • 6
    Это совершенно просто, как вы это сделали, но fyi git также позволяет создавать пользовательские команды. Положите git push origin --delete $1 в файл на вашем пути с именем git-shoot и git shoot branchname. – mahemoff 14 October 2015 в 07:09
  • 7
    Это работает, если это ваша собственная ветка. Но если вы обрезаете все ненужные ветви в репо (некоторые из которых не ваши), этого будет недостаточно – Kermit_ice_tea 30 June 2016 в 22:23
  • 8
    ... и безопаснее использовать: O – cst1992 29 November 2017 в 08:31
  • 9
    Вы забыли часть об удалении локальной ветви, которая может быть выполнена с помощью: git branch -d <local_branch> или git branch -D <local_branch> для удаления силы – Amit Dash 14 February 2018 в 05:23

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

git checkout other_than_branch_to_be_deleted

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

git branch -D branch_to_be_deleted

Удаление удаленная ветвь:

git push origin --delete branch_to_be_deleted
343
ответ дан Willem Van Onsem 17 August 2018 в 10:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: