Как удалить ветку Git локально и удаленно? - PullRequest
15427 голосов
/ 05 января 2010

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

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

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

Ответы [ 38 ]

39 голосов
/ 22 февраля 2017

Я добавил следующие псевдонимы в мой файл .gitconfig. Это позволяет мне удалять ветви с указанием или без указания имени ветви. Имя ветви по умолчанию соответствует текущей ветви, если аргумент не передан.

[alias]
    branch-name = rev-parse --abbrev-ref HEAD     

    rm-remote-branch = !"f() { branch=${1-$(git branch-name)}; git push origin :$branch; }; f"
    rm-local-branch = !"f() { branch=${1-$(git branch-name)}; git checkout master; git branch -d $branch; }; f"
    rm-branch-fully = !"f() { branch=${1-$(git branch-name)}; git rm-local-branch $branch; git rm-remote-branch $branch; }; f"
32 голосов
/ 05 февраля 2016

Альтернативной опцией командной строки для удаления удаленных веток является страница веток GitHub .

См. Например: https://github.com/angular/angular.js/branches

Находится на странице Code -> Branches репозитория GitHub.

Я обычно предпочитаю командную строку сам, но на этой странице GitHub вы найдете гораздо больше информации о ветвях, таких как дата последнего обновления и пользователь и количество коммитов вперед и позади . Это полезно при работе с большим количеством веток.

30 голосов
/ 02 мая 2016

У меня также были подобные проблемы, и это, кажется, работает: Это удаляет локальную ветку. git branch -d the_local_branch

Это удаляет удаленную ветку git push origin :the_remote_branch

Источник: Макандра Кардс

28 голосов
/ 04 августа 2016

Есть хороший ответ, но, если у вас есть тонна веток, удаление их одно за другим локально и удаленно, будет утомительной задачей. Вы можете использовать этот скрипт для автоматизации этих задач.

branch_not_delete=( "master" "develop" "our-branch-1" "our-branch-2")


for branch in `git branch -a | grep remotes | grep -v HEAD | grep -v master`; do

    # delete prefix remotes/origin/ from branch name
    branch_name="$(awk '{gsub("remotes/origin/", "");print}' <<< $branch)"

    if ! [[ " ${branch_not_delete[*]} " == *" $branch_name "* ]]; then
        # delete branch remotly and locally
        git push origin :$branch_name
    fi
done 
  • Список веток, которые вы не хотите удалять
  • Итерация по удаленной ветке, и если их нет в нашем "списке сохранения", мы удалили.

Источник: удаление-git-ветвлений за один раз

23 голосов
/ 13 февраля 2017

Используя GitBash , вы можете выполнить следующее:

git branch --delete <branch>

OR

В настольном приложении GitHub, когда вы отметили ветку, вы можете удалить ветку Local через полосу меню Branch :

enter image description here

Если вы НЕ используете настольное приложение GitHub и используете IDE, например Visual Studio, для локального управления исходным кодом, все, что вам нужно сделать, - это пара быстрых шагов:

  1. Проверьте ветку, отличную от той, которую вы хотите удалить.
  2. Щелкните правой кнопкой мыши ветку, которую хотите удалить.
  3. Выберите Удалить из контекстного меню.

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

enter image description here

* Имейте в виду - если ветка не опубликована, нет необходимости пытаться удалить ее из своего онлайн-хранилища.

19 голосов
/ 23 октября 2017

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

удалить по местному:

git branch -D usermanagement

удалить в удаленном местоположении:

git push --delete origin usermanagement
19 голосов
/ 25 сентября 2017

Я создал следующую удобную функцию в моем файле .bash_aliases:

git-delete-branch() 
{ 
    if [[ -n $1 ]]; then
        git checkout master > /dev/null;
        branch_name="$1";
        echo "Deleting local $branch_name branch...";
        git branch -D "$branch_name";
        echo "Deleting remote $branch_name branch...";
        git push origin --delete "$branch_name";
        git remote prune origin;
        echo "Your current branches are:";
        git branch -a;
    else
        echo "Usage: git-delete-branch <branch_name>";
    fi
}
17 голосов
/ 07 декабря 2017

Очень просто

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

git push -d origin <branch-name>

OR

git push origin :<branch-name>

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

git branch -D <branch-name>
...