Я хочу удалить ветку как локально, так и удаленно.
$ 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. Например, можно создать следующий сценарий 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>