2009-01-22 129 views
75

我在github上有一個主分支(主)和一些實驗工作的分支。我做了一些提交併推送到實驗分支,一切都很好。git:開關分支沒有分離頭

現在,在不同的機器上,我試圖克隆我的倉庫(Git克隆),然後切換到experimental分支(GIT結賬分支名稱),但每次我這樣做,我的頭被拆卸和我無法推送我的更改。我究竟做錯了什麼?我感覺我錯過了某個地方的基本git概念,但是閱讀隨機的git手冊頁並沒有給我任何線索。

我是新來的混帳,所以我很抱歉,如果我是一個白癡,但我找不到任何文件,將幫助我重新貼上我的頭。

編輯

跟蹤分支的概念是我失蹤了。現在我對這個概念有了一個清晰的認識。就個人而言,我發現git branch --track語法比git checkout -b branch-name origin/branch-name更直觀。

感謝您的幫助!

回答

88
# first time: make origin/branchname locally available as localname 
git checkout -b localname origin/branchname 

# othertimes 
git checkout localname 

git push origin 

爲了方便起見,你可能當你簽出origin/branchname你是不是真的檢查出一個分支使用相同字符串的localName & BRANCHNAME
origin/branchname是「遠程」的名稱,你可以讓他們的列表,

branch -a 

如果已經啓用了色彩,當地的分支機構將是一種顏色,以及遠程另一個。

您必須首先在本地進行遠程分支追蹤,以便能夠切換並處理它。

+5

男人,爲什麼不「git checkout origin/branchname」開始跟蹤胸罩如果它尚未被追蹤,它會自動執行嗎? – 2010-12-22 18:02:29

+2

,因爲您仍然需要國外分支的本地名稱。 – 2010-12-23 11:12:31

12
git clone [email protected]:abc/def.git 
cd def 

現在創建一個跟蹤分支:

git branch --track experimental origin/experimental 
git checkout experimental 

然後,在那裏工作後,簡單地推到github上通過

git push 
10

爲了擴大對肯特的答覆,你做你的克隆後,只有你擁有的分支(遙控器不計算在內)是在你克隆的存儲庫中處於活動狀態的分支 - 掌握你的情況。

所以,首先你需要創建一個新的分支來跟蹤遠程實驗分支:

$ git branch experimental origin/experimental 

,然後檢查出來:

$ git checkout experimental 

不過,肯特是正確的 - 這兩個命令可以結合使用

$ git checkout -b experimental origin/experimental