當我推一個新的分支最多通過Git的擴展遠程倉庫,我得到一個警告,指出什麼是跟蹤參考?
The branch {branch name} does not have a tracking reference. Do
you want to add a tracking reference for {branch name}?
什麼是跟蹤參考?我只發現了幾個跟蹤谷歌引用的提及,並沒有真正的定義。
當我推一個新的分支最多通過Git的擴展遠程倉庫,我得到一個警告,指出什麼是跟蹤參考?
The branch {branch name} does not have a tracking reference. Do
you want to add a tracking reference for {branch name}?
什麼是跟蹤參考?我只發現了幾個跟蹤谷歌引用的提及,並沒有真正的定義。
其基本思想是純粹是本地引用(例如分支,標籤),然後是遠程跟蹤引用,它跟隨其他回購站中發生的情況。因爲Git是分散的,所以你可以選擇一個分支的名字,這個名字和遠程的名字一樣,但不知道另一個名字,這樣他們就完全不同了。 Git允許你這樣做,但它也提供了一種將本地引用鏈接到遠程引用的方法。
例如,請考慮以下幾點:
% git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/maint
remotes/origin/master
remotes/origin/next
remotes/origin/pu
remotes/origin/todo
在這裏,我們有origin
稱爲next
和todo
分支機構。
% git checkout -t remotes/origin/next
Branch next set up to track remote branch next from origin.
Switched to a new branch 'next'
% git branch todo
現在我們有一個本地分支next
將跟蹤不會改變remotes/origin/todo
更新相同的名稱和當地分支機構todo
的遠程分支。
謝謝。因此,「引用」僅僅是一個對象,就像一個分支或標籤,而「跟蹤引用」只是一個鏈接到遠程存儲庫中相應對象的對象? – 2013-03-13 04:23:39
是的 - 這是主要想法。 「對象」在Git中有特殊的含義;它意味着任何存儲在.git/objects之下的SHA1,因此它比「reference」更普遍,但這是主意。 – 2013-03-13 04:29:29
Sooo,呃,有人想推薦我們應該說YES還是NO? 「你想添加一個跟蹤引用到主」?實際情況仍然令人困惑。通常選擇什麼?兩種方案都有什麼優點和缺點?如果沒有造成任何問題,可以說'是'並且忘記它嗎? – 2013-07-15 19:32:56
尼克Quaranto的優秀博客git的準備有一個文章,解釋remote tracking branches:
遠程跟蹤分支有幾個不同的用途:
他們用來連接你」重新在本地工作,與遠程的 相比。
當您使用git pull或git fetch時,他們會自動知道從 獲得更改的遠程分支。
更好的是,git狀態會識別出您在分支的遠程版本的前面 前多少次提交。
機Git分支可以跟蹤遠程分支,這意味着混帳推和git pull命令就會知道推拉承諾和跟蹤的分支默認。此外,git status會告訴您當前本地分支和它正在跟蹤的遠程分支之間的狀態。當你克隆一個git倉庫時,git會爲本地主分支添加一個跟蹤引用來跟蹤遠程主分支。當你從一個新的遠程分支結賬時,git會爲創建的本地分支添加一個跟蹤參考,以跟蹤你簽出的遠程分支。但是,如果您在本地創建新分支,然後將其推送到遠程存儲庫,則必須明確告訴git是否希望本地分支開始跟蹤新的遠程分支。使用-u
或--set-upstream
選項時,可以將本地分支推送到遠程存儲庫:git push -u origin my-new-branch
。
您可以使用命令git branch -vv
來檢查您的本地分支機構正在跟蹤哪些遠程分支(如果有)。下面是輸出的一個小例子。
b1 560eb64 Added file.txt
b2 560eb64 [origin/b2] Added file.txt
b3 b638c18 [origin/r1: ahead 1] Added file3.txt
* master 560eb64 [origin/master] Added file.txt
在這種情況下,我們有地方分支機構master
,b1
,b2
和b3
。 master
分支正在跟蹤名爲master
的遠程分支,b1
分支未跟蹤任何遠程分支,b2
分支正在跟蹤名爲b2
的遠程分支,而b3
分支正在跟蹤名爲r1
的遠程分支。 git branch -vv
也顯示與被跟蹤分支相關的分支的狀態。在這裏,分支b3
在追蹤的遠程分支之前是1,並且其他分支與它們各自的遠程追蹤分支達到最新。
因此,如果您創建本地分支並推送到遠程存儲庫,是否要添加對分支的跟蹤引用?通常,當您將新的本地分支推送到遠程存儲庫時,您需要與其他開發人員協作以實現功能。如果您將跟蹤引用添加到本地分支,則可以方便地將其他人對分支所做的更改提取出來,所以我認爲在大多數情況下您希望添加跟蹤引用。
是的,你可能想要添加它。在控制檯中執行此操作:git branch --set-upstream-to origin/master
請參閱push -u for the scoop。 – bmargulies 2013-03-13 01:04:51
如果我理解用於push,pull和config的git手冊頁,跟蹤引用是一個設置或設置,添加到配置文件中,由無參數的git-pull用來告訴它要下拉什麼。我發現文檔有點混亂,但我認爲它是跟蹤參考是在配置文件中的以下設置的組合:遠程。 .fetch和分支。 .merge。那是對的嗎? –
2013-03-13 01:32:41