如何停止跟踪Git中的远程分支?

我要求停止跟踪,因为在我的具体情况下,我想删除本地分支,但不是远程分支。删除本地分支并将删除推到remote也会删除远程分支:

如何在本地和GitHub中删除Git分支?

我能不能只做git branch -d the_branch,当我之后推送git时,它不会被传播?

如果我稍后运行git push origin:the_branch,它是否只会传播?


当前回答

最简单的方法是远程删除分支,然后使用:

Git获取——删除(也就是Git获取-p)

其他回答

正如Yoshua Wuyts的回答中提到的,使用git分支:

git branch --unset-upstream

其他选项:

您不必删除本地分支。

简单地删除跟踪远程分支的本地分支:

git branch -d -r origin/<remote branch name>

-r,——remotes告诉git删除远程跟踪分支(即删除跟踪远程分支的分支集)。这将不会删除远程回购上的分支!

参见“很难理解git-fetch”

没有本地跟踪分支的概念,只有远程跟踪分支。 因此,origin/master是在origin repo中对master的远程跟踪分支

正如Dobes Vandermeer的回答中提到的,您还需要重置与本地分支相关的配置:

git config --unset branch.<branch>.remote
git config --unset branch.<branch>.merge

删除<branchname>的上游信息。 如果没有指定分支,则默认为当前分支。

(git 1.8+, 2012年10月,提交b84869e由Carlos Martín Nieto (carlosmn))

这将使任何推/拉完全不知道origin/<远程分支名称>。

删除本地分支和远程分支之间的关联:

git config --unset branch.<local-branch-name>.remote
git config --unset branch.<local-branch-name>.merge

如果你不需要,可以选择删除本地分支:

git branch -d <branch>

这不会删除远程分支。

下面是删除所有与模式匹配的远程跟踪分支的一行代码:

Git branch -rd $(Git branch -a | grep '{pattern}' | cut -d'/' -f2-10 | xargs)

Git分支——unset-upstream停止跟踪所有本地分支,这是不可取的。

从.git/config文件中删除[branch "branch-name"]段

git branch -D 'branch-name' && git branch -D -r 'origin/branch-name'

这对我来说是最好的。

您可以使用这种方式删除远程分支

git remote remove <your remote branch name>