Я хочу удалить ветку как локально, так и удаленно.
$ 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 push -d <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 »]
Начиная с 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-2.8.0] вы также можете использовать git push
с параметром -d
в качестве псевдонима для --delete
.
Поэтому установленная вами версия Git будет определять, нужно ли вам использовать более простой или жесткий синтаксис.
Из главы 3 Pro Git Скотта Чакона:
Удаление удаленных филиалов
Предположим, что вы закончили с удаленной веткой - скажем, вы и ваши сотрудники закончили с функцией и объединили ее в основную ветку вашего пульта (или в любой другой ветке, в которой находится ваша стабильная кодовая линия). Вы можете удалить удаленную ветку, используя довольно тупой синтаксис
git push [remotename]: [branch]
. Если вы хотите удалить ветку исправления сервера с сервера, вы запускаете следующее:$ git push origin: serverfix На [email protected]: schacon / simplegit.git
- [удалено] serverfix
Boom. Нет больше веток на вашем сервере. Возможно, вы захотите поймать эту страницу, потому что вам понадобится эта команда, и вы, вероятно, забудете синтаксис. Чтобы запомнить эту команду, вспомнив синтаксис
git push [remotename] [localbranch]: [remotebranch]
, который мы рассмотрели немного раньше. Если вы оставите часть[localbranch]
, то вы в основном говорите: «Ничего не бери с моей стороны и сделай это« [remotebranch] ».»
Я выпустил «git push origin: bugfix», и он работал прекрасно. Скотт Чакон был прав - я захочу собачье ухо на этой странице (или практически собачье ухо, ответив на это в Stack & nbsp; Overflow).
[Git-2.8.0]: https://github.com/git/git/blob/master/Documentation/RelNotes/2.8.0.txt
Тогда вы должны выполнить это на других машинах
# Fetch changes from all remotes and locally delete
# remote deleted branches/tags etc
# --prune will do the job :-;
git fetch --all --prune
распространять изменения.
Ответ Мэтью отлично подходит для удаления удаленных ветвей, и я также ценю объяснение, но делаю простое различие между двумя командами:
Чтобы удалить локальную ветку с вашего компьютера:
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
Если вам нужны более подробные объяснения следующих команд, см. Длинные ответы в следующем разделе.
Удаление удаленной ветки:
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
.Визуализация 3 ветвей! Оригинальный плакат используется
git branch -rd origin/bugfix
который удалил только свою локальную ветку удаленного отслеживания origin / bugfix
, а не фактическую удаленную ветку bugfix
на origin
.
Диаграмма 2! Чтобы удалить эту фактическую удаленную ветку , вам нужно
git push origin --delete bugfix
В следующих разделах описываются дополнительные детали, которые следует учитывать при удалении удаленных и удаленных веток.
Обратите внимание, что удаление удаленной ветки 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
из командной строки (как указано выше), то ваше локальное репо все равно будет содержать (теперь устаревшую) ветку удаленного отслеживания 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
и- несколько
options, чтобы запустить fetch from много репозиториев и опция- prune
для удаления удаленного отслеживания ветви, которые устарели. Они делают «git remund» и «git удаленная чернослив "менее необходим (нет плана удаления" удаленный обновление "ни" удаленный чернослив ", хотя).
Кроме того, вместо обрезки устаревших локальных ветвей удаленного отслеживания через git fetch -p
, вы можете избежать дополнительной работы в сети , просто вручную удалив ветку (и) с помощью -- remote
или - r
флаги:
git branch --delete --remotes origin/X
git branch -dr origin/X # Shorter
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
, который просто удаляет локальную ветку ONLY !...
-D
означает --delete --force
, который удалит ветку, даже если она не объединена (force delete), но вы также можете использовать -d
, что означает --delete
, который выдает ошибку, соответствующую статуса слияния ветки...
Я также создаю изображение ниже , чтобы показать шаги:
Совет: при удалении веток с помощью
git branch -d <branchname> # deletes local branch
или
git push origin :<branchname> # deletes remote branch
удаляются только ссылки. Даже при том, что ветка фактически удалена на пульте, ссылки на нее все еще существуют в локальных репозиториях членов вашей команды. Это означает, что для других членов команды удаленные ветви все еще видны, когда они делают git branch -a
.
Чтобы решить эту проблему, члены вашей команды могут обрезать удаленные ветви
git remote prune <repository>
Обычно это «пульт дистанционного чернослива».
Если вы хотите удалить ветку, сначала проверьте ветку, отличную от ветки, которая будет удалена.
git checkout other_than_branch_to_be_deleted
Удаление местного филиала:
git branch -D branch_to_be_deleted
Удаление удаленной ветки:
git push origin --delete branch_to_be_deleted
Это просто: просто выполните следующую команду:
Чтобы удалить ветку Git как локально, так и удаленно, сначала удалите локальную ветку с помощью команды:
git branch -d example
(здесь «пример» - это имя ветки)
И после этого удалите удаленную ветку с помощью команды:
git push origin :example
Другой подход: -
git push --prune origin
ПРЕДУПРЕЖДЕНИЕ: Это удалит все удаленные ветви, которые не существуют локально. Или более всесторонне
git push --mirror
эффективно сделает удаленный репозиторий похожим на локальную копию репозитория (локальные головки, пульты и теги отражаются на удаленном компьютере).
Я использую следующее в моих настройках Bash:
alias git-shoot="git push origin --delete"
Тогда вы можете позвонить:
git-shoot branchname
Удалить локально:
Чтобы удалить локальную ветку, вы можете использовать:
git branch -d <branch_name>
Чтобы принудительно удалить ветку, используйте -D
вместо -d
.
git branch -D <branch_name>
Удалять удаленно:
Есть два варианта:
git push origin :branchname
git push origin --delete branchname
Я бы посоветовал вам использовать второй способ, так как он более интуитивен.
С января 2013 года GitHub включает Удалить ветку < / kbd > кнопка рядом с каждой веткой на странице "Филиалы".
Соответствующее сообщение в блоге: Создать и удалить ветки
Если вы хотите выполнить оба этих шага с помощью одной команды, вы можете создать для нее псевдоним, добавив приведенное ниже в свой ~/.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).
Удалять вашу ветку локально и удаленно
Оформить заказ в основную ветку - git checkout master
Удалить удаленную ветку - git push origin --delete < branch-name >
Удалить локальную ветку - git branch --delete < branch-name >
Вы также можете сделать это, используя `git remote prune origin
$ git remote prune origin
Pruning origin
URL: [email protected]/yourrepo.git
* [pruned] origin/some-branchs
Он обрезает и удаляет удаленные отслеживающие ветви из списка git branch -r
.
В дополнение к другим ответам я часто использую инструмент git_remote_branch. Это дополнительная установка, но она дает вам удобный способ взаимодействия с удаленными ветками. В этом случае удалить:
grb delete branch
Я считаю, что я также часто использую команды publish
и track
Команда One liner удалить как локальную, так и удаленную :
D = имя ветви; ветка git -D $ D; git push origin: $ D
или добавьте псевдоним ниже в ваш ~/.gitconfig ; использование: git kill branch-name
[alias]
kill = "!f(){ git branch -D \"$1\"; git push origin --delete \"$1\"; };f"
Давайте предположим, что наша работа над веткой «контактная форма» выполнена, и мы уже интегрировали ее в «мастер». Поскольку нам это больше не нужно, мы можем удалить его (локально):
$ git branch -d контактная форма
А для удаления удаленной ветки:
git push origin --delete contact-form
Удалить удаленную ветку
git push origin: < branchname >
Удалить локальную ветку
git branch -D < branchname >
Удалить шаги локальной ветки: