Как удалить ветку Git локально и удаленно?

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

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

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

15808
задан cs95 15 June 2019 в 04:46
поделиться

1 ответ

Самый гибкий путь состоит в том, чтобы использовать пользовательская команда Git. Например, можно создать следующий сценарий Python где-нибудь в Вашем $PATH под именем git-rmbranch:

#!/usr/bin/env python3

import argparse
import subprocess

parser = argparse.ArgumentParser(
    description='Delete a Git branch locally and remotely')
parser.add_argument('branch_name', help='The branch name')
parser.add_argument('-f', '--force', action='store_true',
                    help='Force deletion of not fully merged branches')
args = parser.parse_args()    
opt = '-D' if args.force else '-d'

try:
    subprocess.check_call(['git', 'branch', opt, args.branch_name])
    subprocess.check_call(['git', 'push', 'origin', '--delete', args.branch_name])
except subprocess.CalledProcessError:
    pass

Тогда использование это в Вашем репозитории как это:

git rmbranch <branch_name>

или с -f для принуждения удаления локальных ответвлений, которые не полностью объединяются:

git rmbranch -f <branch_name>
2
ответ дан 22 November 2019 в 19:37
поделиться
Другие вопросы по тегам:

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