删除远程分支的尝试失败 :

$ 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.

我如何正确删除本地和远程的远程/原产/bugfix分支?


当前回答

Matthew的回答对移除远程树枝很有帮助, 我也欣赏这一解释,

要从您的机器中删除本地分支 : git 分支 - d { local_ branch} (使用 - D 代替强制删除分支而不检查合并状态); 从服务器中删除远程分支 : git 推源 - d {remote_ branch} 。

参考: Git: 删除分支( 本地或远程) 。

其他回答

最灵活的方式是使用自定义的 Git 命令。 例如, 在您的 $PATH 中以 Git- rmbranch 命名的某个地方创建以下 Python 脚本, 并使其可以执行 :

#!/usr/bin/env python3

import argparse
import subprocess
import sys

def rmbranch(branch_name, remote, force):
    try:
        print(subprocess.run(['git', 'branch', '-D' if force else '-d', branch_name],
                             capture_output=True, check=True, encoding='utf-8').stdout, end='')
    except subprocess.CalledProcessError as exc:
        print(exc.stderr.replace(f'git branch -D {branch_name}', f'git rmbranch -f {branch_name}'), end='')
        return exc.returncode

    return subprocess.run(['git', 'push', remote, '--delete', branch_name]).returncode    

if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='Delete a Git branch locally and remotely.')
    parser.add_argument('-r', '--remote', default='origin', help="The remote name (defaults to 'origin')")
    parser.add_argument('-f', '--force', action='store_true', help='Force deletion of not fully merged branches')
    parser.add_argument('branch_name', help='The branch name')
    args = parser.parse_args()

    sys.exit(rmbranch(args.branch_name, args.remote, args.force))

Git Rmbranch -h 将展示您使用信息 :

usage: git-rmbranch [-h] [-r REMOTE] [-f] branch_name

Delete a Git branch locally and remotely.

positional arguments:
  branch_name           The branch name

optional arguments:
  -h, --help            show this help message and exit
  -r REMOTE, --remote REMOTE
                        The remote name (defaults to 'origin')
  -f, --force           Force deletion of not fully merged branches

请注意, git 推进源 - delete <branch_ name > 也会删除本地远程跟踪分支( 默认情况下为源/ < branch_ name > ) , 因此不需要关注 。

P. S. 您可以在此找到这个 Git 命令的最新版本, 欢迎提出意见和建议 。

我在我的巴什设置中使用了以下内容:

alias git-shoot="git push origin --delete"

然后您可以拨打:

git-shoot branchname

删除分行

我们假设我们的分支“联系形式”的工作已经完成, 我们已经把它融入了“ 主管” 。 既然我们不再需要它, 我们可以删除它( 本地) : git 分支 $ git - d 联系形式 。

要删除远程分支 :

git push origin --delete contact-form

如果您想要删除分支, 请先向要删除的分支以外的分支首选 。

git checkout other_than_branch_to_be_deleted

删除本地分支 :

git branch -D branch_to_be_deleted

删除远程分支 :

git push origin --delete branch_to_be_deleted

一班级命令,删除本地和远程两个部分:

D=branch-name; git branch -D $D; git push origin :$D

或添加以下别名到 ~/. gitconfig 的 ~ /. gitconfig 。 用法: git 杀死分支名称

[alias]
    kill = "!f(){ git branch -D \"$1\";  git push origin --delete \"$1\"; };f"