你如何中止跟蹤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>
。