一、QUESTION
如何在本地和远程正确删除remotes/origin/bugfix分支
1 | $ git branch -d remotes/origin/bugfix |
删除远程分支失败了
二、ANSWER
注意:在大多数情况下,指的是origin
1 | git push -d <remote_name> <branchname> |
1、删除本地分支
要删除本地分支,请使用以下方法之一:
1 | git branch -d <branch_name> |
该-d选项是 的别名–delete,仅当分支已完全合并到其上游分支时才删除该分支。
该-D选项是 的别名–delete –force,“无论其合并状态如何”它都会删除分支。
从Git v2.3开始,git branch -d(delete) 开始使用-f(force) 标志。
如果您尝试删除当前选定的分支,会报错。
2、删除远程分支
这是在Git v1.5.0中添加的“删除远程分支或标签”命令
1 | $ git push <remote_name> :<branch_name> |
Git v1.7.0 开始,可以使用以下命令删除远程分支
1 | $ git push <remote_name> --delete <branch_name> |
比使用如Git v1.5.0更简洁
从Git v2.8.0开始,还可以使用git push with -d(–delete). 因此,安装的 Git 版本将决定您是否需要使用更简单或更难的语法。
三、Tips
如果你的本地分支没有与 master 合并并运行
1 | git branch -d your_branch |
那么您将出错
1 | error: The branch 'your_branch' is not fully merged. If you are sure you want to delete it, run 'git branch -D your_branch' |
建议使用 -d 而不是 -D 因为更安全。如果 -d 由于未合并提交而失败,那么您需要对其进行评估,如果确实可以删除,则使用 -D
其他具有删除远程分支的人应该运行如下命令,以便在本地删除远程中不再存在较早的分支
1 | git remote prune <name>(例如git remote prune origin) |
如果它没有与当前的 HEAD 合并,-d 会发出警告。如果你需要清楚,推荐使用这个命令
1 | git branch -a --merged origin/master |
这个命令会列出所有分支,包括本地和远程,已合并到 master 中的分支