2016-03-21 211 views
0

所以我的遙控器上有一個叫做feature1的分支。我試圖創建一個本地分支通過跟蹤此:刪除本地「遠程分支」而不刪除遠程分支?

git checkout -b origin/feature1 

但現在git branch顯示我:

master  
*origin/feature1 

,我也知道這是不對的。本地應該是feature1,而不是origin/feature1

如何在遠程分支完好無損的情況下將其刪除,並將其設置正確?我做錯了什麼?

回答

2

你的命令應該是:

git checkout -b feature1 origin/feature1 

它說「結賬,並創建分支feature1,和跟蹤origin/feature1'。你所做的是創建一個名字爲origin/feature1的分支,它不跟蹤任何遠程分支。

爲了解決這個問題,交換到另一個分支:

git checkout master 

然後將其刪除:

git branch -d origin/feature1 
+0

OH right'git branch -d etc'不會刪除遠程分支。完全忘了。 – Aerovistae

+0

問題....'git branch -d origin/fea'不是自動填充該分支名稱,儘管.... – Aerovistae

+0

@Aerovistae我也有這個問題,也許git與命名混淆(並在看當地的遙控器)。但是,手動編寫它確實有效(在回答之前在本地進行測試)。 – Rob

1

要刪除一個分支的那樣簡單:

git branch -D <branch name> 

但你也可以只重命名舊之一:

,我也知道這是不對的。它應該只是feature1本地,而不是origin/feature1。

git branch -m <new_name> 

這裏是所有命令的全屏截圖

enter image description here

2

什麼你在這裏做的是創建一個名爲origin/feature1一個普通的地方分支。 Git對此非常滿意 - 在內部,它的名字是refs/heads/origin/feature1,它明確表示它是一個普通的本地分支 - 儘管用戶非常困惑,他們認爲它看起來像是一個遠程跟蹤分支。

由於Rob already answered,您可以簡單地刪除具有僞造名稱的本地分支。或者,也可以將其重命名,這避免了先下車吧:

$ git branch 
    master 
* origin/feature1 
$ git branch -m feature1 
$ git branch 
    master 
* feature1 

注意實際的遠程分支有與refs/remotes/開始全面內部名稱,並可以運行git symbolic-ref HEAD看到的完整的內部名稱目前的分支(如果你知道refs/heads/refs/remotes/之間的事情,這可能不太令人困惑)。