你如何中止跟踪Git中的远程分支? git
我要求中止跟踪,由于在个人具体状况下,我想删除本地分支,但不是远程分支。 删除本地删除并将删除推送到远程也将删除远程分支: github
我能够只作git branch -d the_branch
,当我稍后git push
时它不会被传播吗? post
它是否只会在我运行git push origin :the_branch
传播git push origin :the_branch
稍后会怎样? fetch
您可使用删除远程跟踪分支 spa
git branch -d -r origin/<remote branch name>
正如VonC上面提到的那样。 可是,若是保留分支的本地副本, git push
仍会尝试推送该分支 (这可能会给你一个非快进错误, 就像它为ruffin作的那样 )。 这是由于config push.default
默认为matching
,这意味着: .net
匹配 - 推送全部匹配的分支。 两端具备相同名称的全部分支都被认为是匹配的。 这是默认值。 code
(见http://git-scm.com/docs/git-config下push.default
) 资源
当您删除远程跟踪分支时,可能不是您想要的,您能够将push.default
设置为upstream
(或者若是您有git <1.7.4.3则进行tracking
) rem
上游 - 将当前分支推送到其上游分支。 get
运用
git config push.default upstream
而且git将中止尝试推送已经“中止跟踪”的分支。
注意:更简单的解决方案是将本地分支重命名为其余分支。 这也将消除一些混淆的可能性。
最简单的方法是远程删除分支,而后使用:
git fetch --prune(又名git fetch -p)
这不是问题的答案,可是我没法弄清楚如何在上面的评论中获得合适的代码格式...因此这里的自动声望 - 该声明是个人评论。
我在.gitconfig中的一个花哨的shmancy [alias]条目中有@Dobes提供的配方:
# to untrack a local branch when I can't remember 'git config --unset' cbr = "!f(){ git symbolic-ref -q HEAD 2>/dev/null | sed -e 's|refs/heads/||'; }; f" bruntrack = "!f(){ br=${1:-`git cbr`}; \ rm=`git config --get branch.$br.remote`; \ tr=`git config --get branch.$br.merge`; \ [ $rm:$tr = : ] && echo \"# untrack: not a tracking branch: $br\" && return 1; \ git config --unset branch.$br.remote; git config --unset branch.$br.merge; \ echo \"# untrack: branch $br no longer tracking $rm:$tr\"; return 0; }; f"
而后我就能够跑了
$ git bruntrack branchname
要删除当前分支的上游,请执行如下操做:
$ git branch --unset-upstream
这适用于Git v.1.8.0或更高版本。 (资料来源: 1.7.9 ref , 1.8.0 ref )
如Yoshua Wuyts的回答所述 ,使用git branch
:
git branch --unset-upstream
您没必要删除本地分支。
只需删除跟踪远程分支的本地分支:
git branch -d -r origin/<remote branch name>
-r, --remotes
告诉git删除远程跟踪分支(即删除分支集以跟踪远程分支)。 这不会删除远程仓库上的分支 !
请参阅“ 很难理解git-fetch ”
没有本地跟踪分支的概念,只有远程跟踪分支。
因此origin/master
是一个远程跟踪分支master
的origin
回购
正如Dobes Vandermeer的回答中所提到的,您还须要重置与本地分支关联的配置:
git config --unset branch.<branch>.remote git config --unset branch.<branch>.merge
删除
<branchname>
的上游信息。
若是未指定分支,则默认为当前分支。
(git 1.8 +,2012年10月,由CarlosMartínNieto 承诺b84869e ( carlosmn
) )
这将使任何推/拉彻底不知道origin/<remote branch name>
。