git - 删除Git在本地和远程分支

我想删除本地分支和从 GitHub fork的远程项目。

成功删除本地分支

$ git branch -D bugfix
Deleted branch bugfix (was 2a14ef7).

尝试删除远程分支

$ 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分支在本地和在GitHub?

时间:

删除远程分支 matthew的就是很好的答案,我也非常喜欢这个解释,但要做一个简单的区分这两个命令:

若要删除 本地分支 从你的计算机:

git branch -d the_local_branch

若要删除 远程分支 从服务器:

git push origin :the_remote_branch

从这里获取 : https://makandracards.com/makandra/621-git-delete-a-branch-local-or-remote

短回答

如果你希望更详细解释下列命令,然后在下一部分中看到的长答案。

删除远程分支:

git push origin --delete <branch>  # Git version 1.7.0 or newer
git push origin :<branch>          # Git versions older than 1.7.0

删除本地分支:

git branch --delete <branch>
git branch -d <branch> # Shorter version
git branch -D <branch> # Force delete un-merged branches

如果删除某个远程跟踪分支:

git branch --delete --remotes <remote>/<branch>
git branch -dr <remote>/<branch> # Shorter

git fetch <remote> --prune # Delete multiple obsolete tracking branches
git fetch <remote> -p      # Shorter

长回答 : 有3 种不同的分支删除 !

当我们处理删除在本地和远程分支,请记住 涉及有3 种不同的分支:

  1. 本地分支 X.
  2. 远程origin分支 X.
  3. 本地远程跟踪分支 origin/X能够跟踪远程分支 X.

Visualization of 3 branches

使用原始的发布者

git branch -rd origin/bugfix

它只删除了本地远程跟踪分支 origin/bugfix,而不是实际远程分支 bugfixorigin.

Diagram 2

才能真正删除该图片远程分支,需要

git push origin --delete bugfix

Diagram 3

其他Details

下面几节将介绍更多详细信息时需要考虑删除远程分支和远程跟踪。

删除远程分支推送到远程追踪分支也会删除

请注意,删除远程分支 X在命令行中使用 git push也会删除本地远程跟踪分支 origin/X所以它不需要消除过时的远程跟踪分支与 git fetch --prunegit fetch -p如果你做得很不赖,但是也不会死

你可以验证远程跟踪分支 origin/X也被删除,通过运行以下命令:

# View just remote-tracking branches
git branch --remotes
git branch -r

# View both strictly local as well as remote-tracking branches
git branch --all
git branch -a

清理过时的本地远程跟踪分支origin/X

如果你没有删除你远程分支 X在命令行中( 如以上所示),则你的本地Repo仍将包含远程跟踪分支( 已经过时) origin/X. 有可能出现这种情况,如果删除了直接通过GitHub远程分支Web接口为例。

典型地删除这些过时的远程跟踪分支( git版本1 .6.6 之后) 是简单地运行 git fetch--prune或更短 -p. Note,这样将会删除所有过时的本地远程跟踪分支的所有远程分支以上不再存在的远程

git fetch origin --prune
git fetch origin -p # Shorter

了,以下是相关引述 1 .6 .6发行说明 ( 我的重点) :

" git fetch " 学习了--all--multiple要运行选项,获取来自多个存储库和 --prune选择要删除的远程跟踪分支就过时了 这些让" git remote update " 和" git remote prune " 远程更新" 或者" 删除" remote prune ",虽然不太必要( 没有计划) 。

除了上述的自动剪除过时的远程跟踪分支

或者,将过时的远程跟踪分支到本地而不是修剪 git fetch -p,可以避免进行额外的网络操作。只要手动移除分支 和 --remote-r标志:

git branch --delete --remotes origin/X
git branch -dr origin/X # Shorter

请参见

你还可以使用以下命令来删除远程分支。

git push --delete origin serverfix

命令是一样的,

git push origin :serverfix

但可能会更容易记住。

提示: 如果删除的分支使用

git branch -d <branchname>    # deletes local branch

git push origin :<branchname> # deletes remote branch

只有引用都将被删除。 即使在远程分支实际上是删除对它的引用仍然存在于本地存储库的工作组成员。 这意味着,其他团队成员执行时仍然可以看见已删除的分支git branch -a.

为了解决这个工作组成员可以去除已删除的分支,

git remote prune <repository>

这通常是 git remote prune origin.

git branch -D <name-of-branch>
git branch -D -r origin/<name-of-branch>
git push origin :<name-of-branch>

另一种方法是

git push --prune origin

警告: 这将删除所有远程分支在本地不存在的。 或者更全面,

git push --mirror

这个很简单: 只需运行以下命令:

在本地和远程删除git分支,先删除本地分支,使用命令:

git branch -d example [here example is the branch name]

在那之后删除远程分支,使用命令:

git push origin :example

我按下面的, 在我的 Bash 设置:

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

然后,可以调用:

git-shoot branchname

如果要删除,请先检出一个分支到分支之外的其他分支的新版本。

git checkout other_than_branch_to_be_deleted

删除本地分支

git branch -D branch_to_be_deleted

删除远程分支

git push origin --delete branch_to_be_deleted
...