2014-10-16 38 views
1

我很努力去理解repogit。我創建了一個分支manifest.xml文件,指定<default revision="project/master"… />「repo init -b分支;回購狀態」不顯示你在一個分支

一切工作正常,但當repo sync完成時,沒有跡象表明每個項目都在該分支上。每個項目中的git branch表示您不在分支上。但是,如果您運行gitk,則可以看到您處於正確的修訂版本。

repo checkout project/master表示沒有任何項目有此分支定義。項目目錄中git checkout project/master的輸出看起來像創建了一個新分支。

如果我git clone project; git checkout project/master,那麼一切都如預期。

問題:

  1. 什麼是什麼repo是做不同?

  2. 我想爲我們的項目定義一個「新」主分支。我真的在那個分支上,即使repogit不表示那個?

請幫我瞭解,這樣我可以把我放心......

TIA

回答

1

這是預期。回購並未爲清單中列出的遠程分支創建本地分支。您可以使用repo start(或repo start僅作爲封裝的等效底層Git命令)創建本地分支。回購只檢查清單指向的提交,創建一個分離的頭部。

在Git中,遠程分支無法檢出工作。所有工作(即所有變更)都在當地分支機構進行。當你運行

git clone project 
cd project 
git checkout project/master 

的最後一個命令的字面意思是「簽出項目/主模式,這在匹配遠程分支的情況下,將導致其作爲分離的被檢查出相匹配的分支頭」,但混帳做了什麼,它以爲你實際上意味着這是

git checkout project/master origin/project/master 

它創建基於原點/項目/主遠程分支的本地分行的項目/主。

回購的行爲可能看起來很奇怪,但預期的工作流程是您爲每個正在處理的小東西創建主題分支。回購並不知道你要在一個特定的git中工作(如果有的話),所以爲你創建分支將是放肆的。

另外,請記住,清單並不一定指向分支。修訂屬性可能指向標籤或甚至SHA-1,併爲它們創建本地分支是沒有意義的。

相關問題