2015-12-02 59 views
1

在遠程git存儲庫上有一個分支,最終我想在本地獲取,然後合併工作 - 沒有什麼不尋常的。
我懷疑可能有合併衝突 - 所以而不是問題git pull origin/<branch_name>,我想看看之前的遠程分支上的代碼我試着將它合併到我的本地分支。如何在git中籤出遠程追蹤分支?

所以我試着爲:

  • git fetch origin 我認爲,這意味着我現在有副本只讀遠程跟蹤分支,然後我做了

  • git checkout origin/<branch_name>

嘗試結帳並查看遠程分支的內容。
它工作,但我得到的一些消息像

  • HEAD is in a detached state
  • Previous HEAD position was c293198

和我的VIM逃犯報告當前分支像a697b40散列片段。
這讓我懷疑我做錯了。
在嘗試合併之前是否有更「合適」的方式來檢查遠程分支的內容?

+0

如果你現在唯一擔心的是git在某些提交sha而不是名字時顯示HEAD,那麼執行'git checkout -b name name origin/' – hjpotter92

+0

@ hjpotter92這實際上會創建一個新的本地分支。 OP不希望這樣。他們只是想檢查它。直接檢查跟蹤分支是要走的路。 –

+0

我只是想知道是否有更多的「委員會」命令 - 我錯過了。有git的報告涉及的頭作爲犯煞其實或許有助於提醒一個事實,即時查看只讀分支 –

回答

2

這實際上是正確的。由於您無法移動跟蹤分支,因此您處於分離的頭部。

所有分離的HEAD手段是,做一個新的提交,然後離開它(通過檢查別的東西)將不會引用這個新的提交。

例如,檢出一個標籤也會告訴你,你在分離的HEAD。由於標籤引用不會自行移動,因此您添加的任何新提交都不會有真實的引用指向它。

因此,要回答你的問題:有沒有更「正確」的方式試圖合併前檢查遠程分支的內容是什麼?不,你在做什麼是對的。

+0

啊好了,這是有道理的 - 所以基本上我應該看看非正常狀態報告爲警報回購是在一個不尋常的 - 只讀 - 狀態。另外,在我看來,對於分離的HEAD來說,更具描述性的名字是:*不可連接的HEAD *? –

+0

HEAD * *不可*不可連接。在任何時候,你都可以決定在你當前的位置創建一個新的分支,這個分支會將HEAD附加到它(意味着它將與HEAD一起移動)。分離的頭是正確的名詞,儘管它聽起來像殭屍似的(你的腦袋是分離的,你仍然可以環顧四周...) –

2

事實上,所有你需要做的是:

git checkout branch_name 

如果有產地/ branch_name,當地分行將自動

  • 結賬產地/ branch_name
  • 軌道它(設置原點/ branch_name作爲新的本地分支的上游分支)

git checkout man page

如果<branch>沒有找到,但有確實的存在跟蹤分支只有一個遙控器具有匹配名稱(稱之爲<remote>),當作等價於:

$ git checkout -b <branch> --track <remote>/<branch> 

然後,您可以在本地分支中工作並/或將其合併到您的工作分支。

+0

謝謝我只是這麼做了 - 與另一個分支來自同一個遙控器 - 並得出結論: git剛剛從它在遠程跟蹤分支中的信息創建了本地分支。但是當我急切地想看看遠程跟蹤分支的狀態 - 獨立於我自己的工作,不是'git checkout remotename/branchname'正確嗎? –

+0

@ user4668401,如果你不希望讓任何承諾,是的,一個分離的頭結賬可以工作。順便提一下,請記住,如今您可以爲每個回購多個結帳:http://stackoverflow.com/a/30185564/6309 – VonC