удаленную - git удалить локальный репозиторий




Как удалить ветвь Git как локально, так и удаленно? (20)

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

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

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

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

Оригинальный плакат

git branch -rd origin/bugfix

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

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

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

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

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

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

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

«git fetch» --multiple и - --multiple опции, чтобы запустить выборку из многих репозиториев, а опция --prune удалить удаленные ветви отслеживания, которые стали устаревшими. Это делает «git remote update» и «git remote prune» менее необходимым (нет плана удаления «удаленного обновления» или «удаленной чернослива», хотя).

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

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

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

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

Я хочу удалить ветвь как локально, так и удаленную вилку проекта на 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?


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

$ 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-Sep-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] . Если вы хотите удалить ветвь serverfix с сервера, вы запустите следующее:

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

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

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

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

git fetch --all --prune

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


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

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

grb delete branch

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


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

git push --delete origin serverfix

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

git push origin :serverfix

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


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

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

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


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

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

git branch -D branch_to_be_deleted

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

git push origin --delete branch_to_be_deleted

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

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

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

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 branch -d <branch-name>
git push origin :<branch-name>

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

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


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

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

  1. Нажмите на проект, содержащий ветку
  2. Переключитесь на ветку, которую хотите удалить.
  3. В меню «Ветка» выберите «Отменить публикацию ...», чтобы удалить ветвь с серверов GitHub.
  4. В меню «Ветвь» выберите «Удалить» имя_каталога «...», чтобы удалить ветку с локальной машины (например, машины, на которой вы сейчас работаете)

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

git push origin :<branchname>

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

git branch -D <branchname>

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

  1. выезд в другую ветку
  2. удалить локальный филиал

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

$ 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

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

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

git branch -d example

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

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

git push origin :example

Одна команда 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"

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

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

git branch -d branch_name 

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

git branch -D branch_name

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

Существует два варианта:

git push origin :branchname  

git push origin --delete branchname 

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


git branch -D <name-of-branch>
git branch -D -r origin/<name-of-branch>
git push origin :<name-of-branch>

git push origin --delete branchName

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

git push origin :branchName




git-remote