Я хочу удалить ветку как локально, так и удаленно.
Неудачные попытки удалить удаленную ветку
$ 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
ветку как локально, так и удаленно?
git
version-control
git-branch
git-push
git-remote
Мэтью Ранкин
источник
источник
deleted remote-tracking branch
": см. Github.com/git/git/commit/…Ответы:
Управляющее резюме
Обратите внимание, что в большинстве случаев удаленное имя
origin
. В таком случае вам придется использовать команду, как это.Удалить локальную ветку
Чтобы удалить локальную ветку, используйте одно из следующих:
Примечание .
-d
Опция является псевдонимом для--delete
, который удаляет ветвь, только если она уже полностью объединена в своей вышестоящей ветке. Вы также можете использовать-D
псевдоним--delete --force
, который удаляет ветку «независимо от ее объединенного статуса». [Источник:man git-branch
]Удалить удаленную ветку [Обновлено 8 сентября 2017 года]
Начиная с Git v1.7.0 , вы можете удалить удаленную ветку, используя
что может быть легче запомнить, чем
который был добавлен в Git v1.5.0 «для удаления удаленной ветви или тега».
Начиная с Git v2.8.0 вы также можете использовать
git push
эту-d
опцию в качестве псевдонима для--delete
.Таким образом, версия Git, которую вы установили, будет определять необходимость использования более простого или сложного синтаксиса.
Удалить удаленную ветку [Оригинальный ответ от 5 января 2010]
Из главы 3 Pro Git Скотта Чакона:
Я выпустил,
git push origin: bugfix
и это работало прекрасно. Скотт Чакон был прав - я захочу выслушать эту страницу (или, фактически, собачье ухо, ответив на это на переполнении стека).Затем вы должны выполнить это на других машинах
распространять изменения.
источник
git fetch --all --prune
на других машинах после удаления удаленной ветви на сервере. ||| После удаления локальной ветви с помощьюgit branch -d
и удаления удаленной ветви сgit push origin --delete
другими машинами могут остаться «устаревшие ветви отслеживания» (чтобы их увидетьgit branch -a
). Чтобы избавиться от этого сделатьgit fetch --all --prune
.git branch -a
для просмотра всех веток, вы также можете использовать толькоgit branch -r
для просмотра удаленных ветвей. см. такжеgit remote show origin
- источник: gitready.com/intermediate/2009/02/13/list-remote-branches.htmlgit branch -D Branch_Name
чтобы избавиться от местного отделенияОтвет Мэтью хорош для удаления удаленных веток, и я также ценю объяснение, но для того, чтобы сделать простое различие между двумя командами:
Чтобы удалить локальную ветку с вашего компьютера:
git branch -d {the_local_branch}
(используйте-D
вместо этого, чтобы принудительно удалить ветку без проверки статуса объединения)Чтобы удалить удаленную ветку с сервера:
git push origin --delete {the_remote_branch}
Ссылка: Git: Удалить ветку (локальную или удаленную)
источник
-D
force удаляет,-d
выдает предупреждение, если оно еще не слито.'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'.
git remote prune <name>
(напримерgit remote prune origin
), должны локально удалять устаревшие ветви, которых больше нет в удаленном.git branch -a --merged origin/master
Она перечислит любые ветви, как локальные, так и удаленные; которые были объединены в мастера. Дополнительная информация здесьВ короткие ответы
Если вам нужны более подробные объяснения следующих команд, см. Подробные ответы в следующем разделе.
Удаление удаленной ветки
Удаление локального филиала
Удаление локальной удаленной ветки
Длинный ответ : есть три различные ветви , чтобы удалить!
Когда вы имеете дело с удалением веток как локально, так и удаленно, имейте в виду, что задействованы три разные ветви :
X
.X
.origin/X
которая отслеживает удаленную ветвьX
.Оригинальный постер использовал:
Который только удалил свою локальную ветку удаленного отслеживания
origin/bugfix
, а не фактическую удаленную веткуbugfix
наorigin
.Чтобы удалить эту удаленную ветку , вам нужно
Дополнительные детали
В следующих разделах описываются дополнительные детали, которые следует учитывать при удалении веток удаленного и удаленного отслеживания.
Нажатие на удаление удаленных веток также удаляет удаленные ветви отслеживания
Обратите внимание, что удаление удаленной ветви
X
из командной строки с помощью agit push
также приведет к удалению локальной ветви удаленного отслеживанияorigin/X
, поэтому нет необходимости удалять устаревшую ветку удаленного отслеживания с помощьюgit fetch --prune
илиgit fetch -p
. Тем не менее, это не повредит, если вы все равно это сделаете.Вы можете убедиться, что ветка удаленного отслеживания
origin/X
была также удалена, выполнив следующее:Обрезка устаревшей локальной ветки удаленного отслеживания происхождения / X
Если вы не удалили свою удаленную ветку
X
из командной строки (как выше), то ваш локальный репозиторий все равно будет содержать (теперь устаревшую) ветку удаленного отслеживанияorigin/X
. Это может произойти, например, если вы удалили удаленную ветку напрямую через веб-интерфейс GitHub.Типичный способ удалить эти устаревшие ветви удаленного отслеживания (начиная с Git версии 1.6.6) - просто запустить
git fetch
с--prune
или короче-p
. Обратите внимание, что это удаляет все устаревшие локальные ветви удаленного отслеживания для любых удаленных ветвей, которые больше не существуют на удаленном :Вот соответствующая цитата из примечаний к выпуску 1.6.6 (выделено мной):
Альтернатива вышеупомянутому автоматическому сокращению для устаревших удаленных отслеживающих ветвей
В качестве альтернативы, вместо удаления устаревших локальных удаленных веток отслеживания
git fetch -p
, вы можете избежать дополнительных сетевых операций , просто удалив ветки вручную с помощью флагов--remote
или-r
:Смотрите также
источник
X
иorigin/X
закладки в локальном клоне (2 ветви), а затем иX
на удаленном (создание 3 ветви).Шаги по удалению ветки:
Для удаления удаленной ветки:
Для удаления локальной ветки у вас есть три способа :
Объясните: хорошо, просто объясните, что здесь происходит!
Просто сделайте,
git push origin --delete
чтобы удалить только удаленную ветку , добавьте имя ветви в конце, и это одновременно удалит и отправит ее на удаленную ветку ...Кроме того ,
git branch -D
, который просто удалить локальную ветку только ! ...-D
обозначает,--delete --force
что удалит ветку, даже если она не объединена (принудительное удаление), но вы также можете использовать,-d
которая обозначает--delete
ошибку, соответствующую состоянию слияния ветки ...Я также создаю изображение ниже, чтобы показать шаги:
источник
git branch -a
будет отображать локальные и удаленные ветви. Это поможет вам представить схему.git remote prune origin
ваши локальные копии удаленных веток не удаляются этим. Тот же эффект достигается при использованииgit fetch --prune
Вы также можете использовать следующее, чтобы удалить удаленную ветку
Который делает то же самое, что и
но это может быть легче запомнить.
источник
git branch -d <local_branch>
илиgit branch -D <local_branch>
для принудительного удаленияСовет. При удалении веток с помощью
или
удаляются только ссылки. Несмотря на то, что ветка на самом деле удалена, ссылки на нее все еще существуют в локальных репозиториях членов вашей команды. Это означает, что для других членов команды удаленные ветви все еще видны, когда они делают
git branch -a
.Чтобы решить эту проблему, члены вашей команды могут обрезать удаленные ветви с помощью
Это типично
git remote prune origin
.источник
git push
операция удаляет локальную ветвь и удаленную ветвь.git remote prune
это несколько устаревший способ удаления устаревших веток удаленного отслеживания, более новый способ сделать это - использоватьgit fetch --prune
илиgit fetch -p
.Если вы хотите удалить ветку, сначала оформите заказ на ветку, отличную от удаляемой ветви.
Удаление местного филиала:
Удаление удаленной ветки:
источник
источник
-D
вызывает удаление. Всегда лучше использовать-d
, который будет напоминать, если вам нужно сделать что-то опасное.Это просто: просто запустите следующую команду:
Чтобы удалить ветку Git как локально, так и удаленно, сначала удалите локальную ветку с помощью этой команды:
(Вот
example
название филиала.)И после этого удалите удаленную ветку с помощью этой команды:
источник
Другой подход:
ВНИМАНИЕ: Это удалит все удаленные ветви, которые не существуют локально. Или более всесторонне,
эффективно сделает удаленный репозиторий похожим на локальную копию репозитория (локальные заголовки, удаленные и теги зеркально отображаются на удаленном).
источник
Я использую следующее в моих настройках Bash :
Тогда вы можете позвонить:
источник
git push origin --delete $1
файл на ваш путьgit-shoot
иgit shoot branchname
он тоже будет работать.Удалить локально:
Чтобы удалить локальную ветку, вы можете использовать:
Чтобы принудительно удалить ветку, используйте
-D
вместо-d
.Удалить удаленно:
Есть два варианта:
Я бы предложил вам использовать второй способ, так как он более интуитивно понятен.
источник
С января 2013 года GitHub включал Delete branchкнопку рядом с каждой веткой на странице «Филиалы».
Соответствующее сообщение в блоге: создание и удаление веток
источник
Если вы хотите выполнить оба этих шага с помощью одной команды, вы можете создать для нее псевдоним, добавив следующее в ваш
~/.gitconfig
:Кроме того, вы можете добавить это к вашей глобальной конфигурации из командной строки, используя
ПРИМЕЧАНИЕ . При использовании
-d
(строчная буква d) ветвь будет удалена, только если она была объединена. Чтобы принудительное удаление произошло, вам нужно использовать-D
(заглавная буква D).источник
&&
с ,;
так что даже если первой командой не вторая по- прежнему будет выполнять (иногда только локальный или удаленный только существую).Удалить вашу ветку локально и удаленно
Оформить заказ в мастер-филиал -
git checkout master
Удалить вашу удаленную ветку -
git push origin --delete <branch-name>
Удалить ваше местное отделение -
git branch --delete <branch-name>
источник
Вы также можете сделать это с помощью
git remote prune origin
Он удаляет и удаляет ветки удаленного отслеживания из
git branch -r
списка.источник
В дополнение к другим ответам я часто использую инструмент git_remote_branch . Это дополнительная установка, но она дает вам удобный способ взаимодействия с удаленными филиалами. В этом случае удалить:
Я считаю , что я также использовать
publish
иtrack
команды довольно часто.источник
Один вкладыш команда для удаления как местная, так и удаленная :
Или добавьте псевдоним ниже к вашему ~ / .gitconfig . Применение:
git kill branch-name
источник
git branch -D
Тщательно используйте в скрипте, так как он принудительно удаляет ветку, не проверяя ее слияние. Используйте,-d
чтобы быть в безопасности.Удаление ветвей
И для удаления удаленной ветки:
источник
Удалить удаленную ветку
git push origin :<branchname>
Удалить локальную ветку
git branch -D <branchname>
Удалить шаги локальной ветки:
источник
git push origin :<branchname>
уже выдвигает «пустую» ветку на удаленный (следовательно, удаляет удаленную ветвь)Просто скажи:
источник
легче запомнить, чем
источник
Теперь вы можете сделать это с помощью приложения GitHub Desktop .
После запуска приложения
Переключитесь на ветку, которую хотите удалить
В меню «Ветка» выберите «Отменить публикацию ...», чтобы удалить ветку с серверов GitHub.
В меню «Ветвь» выберите «Удалить имя- ветви » ..., чтобы удалить ветку с локального компьютера (AKA - компьютера, на котором вы сейчас работаете).
источник
Это очень просто:
Удалить удаленную ветку
Или
Удалить локальную ветку
источник
--delete
вместо того,-d
чтобы удалить удаленную ветку.-d
Параметр является псевдонимом для,--delete
и если--delete
работает, то-d
также должен работать, если вы хотите удалить ветку, которую вы можете использовать-D
вместо-d
или--delete
.Удалить локально - (нормально)
Если ваша ветвь находится в процессе перебазирования / слияния, и это не было сделано должным образом, это означает, что вы получите ошибку
Rebase/Merge in progress
, поэтому в этом случае вы не сможете удалить свою ветку.Так что либо вам нужно решить перебазирование / слияние. В противном случае вы можете принудительно удалить , используя
Чтобы удалить в удаленном :
Вы можете сделать то же самое, используя:
Графическое представление:
источник
Это не будет работать, если у вас есть тег с тем же именем, что и ветка на пульте:
В этом случае вам нужно указать, что вы хотите удалить ветку, а не тег:
Точно так же, чтобы удалить тег вместо ветви, вы должны использовать:
источник
Многие другие ответы приведут к ошибкам / предупреждениям. Этот подход является относительно надежным, хотя вам может понадобиться, например,
git branch -D branch_to_delete
если он не полностью объединенsome_other_branch
.Удаленное удаление не требуется, если вы удалили удаленную ветку. Он используется только для получения самых современных пультов, доступных в репозитории, который вы отслеживаете. Я наблюдал,
git fetch
будет добавлять пульты, а не удалять их. Вот пример того, когда наgit remote prune origin
самом деле будет что-то делать:Пользователь А выполняет шаги, описанные выше. Пользователь B будет запускать следующие команды, чтобы увидеть самые последние удаленные ветви:
источник
Мне надоело искать этот ответ, поэтому я применил аналогичный подход к ответу, который ранее опубликовал crizCraig .
Я добавил следующее в свой профиль Bash:
Затем каждый раз, когда
master
я заканчиваю ветку (например, объединенную ), я запускаю в своем терминале следующее:... которые затем удаляются
my-branch-name
изorigin
так и на местном уровне.источник
--delete "$@"
и-D "$@"
вместо этого$1
будем обрабатывать его по нескольким веткам.git branch -d
сначала запустить (с нижним регистром 'd'), чтобы убедиться, что изменения были объединены, а затем нажать в случае успеха (вставить&&
между командами)Перед выполнением
убедитесь, что вы сначала определите, что именно имя удаленной ветви, выполнив:
Это скажет вам, что ввести именно для
<branch>
значения. (branch
чувствителен к регистру!)источник
Использование:
Если вы уверены, что хотите удалить его, запустите
Теперь для очистки удаленных удаленных веток запустите
источник