2014-09-28 58 views
1

最近,我試圖設置我的本地分支feature來跟蹤我的遠程分支的變化,像這樣:混帳設置上游到VR軌道

$ git branch --set-upstream feature origin/feature 

一切都進行得很順利,但是我得到的消息說:

The --set-upstream flag is deprecated and will be removed. Consider using --track or --set-upstream-to 

我的問題是如何使用trackset-upstream-to選項,如果它們之間存在顯着差異?

UPDATE:我使用git版本1.8.4

回答

1

在GIT中跟蹤(或具有上游)的一個分支具有與存儲庫中的配置文件中的跟隨一個條目(/.git/config )

[branch "feature"] 
     remote = origin 
     merge = refs/heads/feature 

您已經使用 「--set上游」 選項已經與被直接替換爲 「--track」

所以

git branch --track feature origin/feature 

此外,還有一個新的語法像

git branch --set-upstream-to=origin/feature feature 

git branch -u origin/feature feature 

所有形式的功能相同。

+0

謝謝!簡明扼要。 – 2014-10-02 00:58:39

2

--track標誌旨在創造一個新的分支時使用:

git branch --no-track foo origin/master # new local foo, with no upstream 
git branch --track bar origin/master  # new local bar, tracks origin/master 

在這兩種情況下,你告訴git的,新的本地分支是與它目前指向提交創建由第二個參數識別(這裏是origin/master)。然後,分支也不會或者不會跟蹤另一個分支(這意味着git status會說類似ahead 2, behind 1的東西,並且git pull會知道要合併的東西)。

如果您不指定這些選項,git branch會猜測是否要跟蹤是否給它第二個參數(但也請參閱branch.autosetupmerge配置標誌)。 (這與git checkout稍有不同,分支名稱不存在;這會查找具有「類似」名稱的遠程跟蹤分支)。

舊的--set-upstream和新的--set-upstream-to是相同的除了參數的順序/位置。固定的問題是,要改變foo跟蹤畢竟origin/master,你必須寫:

git branch --set-upstream foo origin/master 

其中「看起來像」你問設置origin/masterfoo作爲其上游。附:

git branch --set-upstream-to=origin/master foo 

很明顯,你設置fooorigin/master作爲其上游。此外,這允許您設置當前分支的上游,而不必到名當前分支的寫:

git branch --set-upstream-to=origin/master 

這更像剩餘git branch命令(它們都默認爲上的工作當前分支)。

請注意,舊的set-upstream和新的set-upstream-to在分支已存在後使用。 (另外,很難用一隻貓在膝蓋和鍵盤上行走來輸入這些答案:-))

+0

不錯的答案,並耐心等待你的貓:) – 2014-09-29 01:16:43

+1

也許你的貓試圖幫助你回答這個問題。 :) – Landys 2014-09-29 06:10:21