2013-07-25 48 views
2

我有一些Xcode項目,我試圖從GitHub使用git克隆,並且它也有外部子模塊。每當我嘗試克隆時,它都會將這些外部子模塊以及項目中的每個文件夾都放在「(no branch)」而不是master上。這是我在做什麼在終端:如何強制git始終使用主分支?

git clone [email protected]:******.git 
cd ****** 
git submodule update --init 
cd External/****** 
git submodule update --init 
cd External/****** 
git submodule update --init 

如果我cd到任意文件夾,並做git的分支,我得到這個:

git branch 
* (no branch) 
master 

有沒有一種方法,我可以強制git的克隆使用主枝到處?

+0

'git的子模塊更新--init --recursive'應該足夠 –

+0

執行子模塊具有與母體不同的回購'master'的分支?如果將它們切換爲'master',子模塊是否仍然與父存儲庫一起工作,或者它們的代碼是否不兼容? – 2013-07-25 03:34:28

+0

如果我將它們切換爲主,它可以正常工作,但我必須通過並手動將其更改爲每個文件夾,這很煩人。事實上,如果我不將它們切換到master,我會在找不到存在的文件的地方出現編譯錯誤。 – sudo

回答

9

這需要混帳1.8.2或更高版本(2013年3月)

這取決於這些子模塊是如何在.gitmodules聲明:

請參閱 「git submodule tracking latest

這將使你跟隨主分支。
更新當前.gitmodules有:

git config -f .gitmodules submodule.<path>.branch master 
git submodule update --remote --recursive 

注意的是,子模塊仍然不會對任何一間分行。簡單的他們的SHA1將是origin/master之一。
你仍然需要爲每個人提供checkout master

git submodule foreach --recursive git checkout master 
+0

@linquize:感謝您的編輯,但'submodule'的'--branch'選項已經在git1.8.2中引入,而不是git1.8.3。 – VonC

+0

我使用msysgit,沒有1.8.2,所以我提到了1.8.3 – linquize

相關問題