子模塊具有分離頭,因爲子模塊意味着「檢查子模塊存儲庫中的特定提交」。 master
分支可能已經向前移動(它可能指向從落實0b6a803
下降的提交),所以Git檢出特定修訂而不是檢出分支。
git-submodule
可以選擇記錄分支名稱。當你這樣做,你可以使用git submodule update --remote
與分支更新子模塊:
# Add the submodule with the "master" branch referenced
git submodule add -b master https://github.com/holms/chef-starter.git chef-starter
# When you want to update the submodule:
git submodule update --remote
# You'll still need to commit the submodule if you want future checkouts to use the new revision
git add chef-starter
git commit -m "Update chef-starter submodule"
你還是輔助模塊獲得一個分離的頭,當你開始檢查出不同版本的超級項目(vagarant-starter
)的,但至少現在更容易將子模塊從遠程更新到最新版本。
您可能會發現它更容易使用git的子樹,而不是子模塊:
# First, get rid of the submodule
git submodule deinit chef-starter # If you have Git 1.8.3 or later, otherwise edit .gitmodules
git rm chef-starter # Remove the directory
git commit -m "Removed chef-starter submodule in preparation to add as a subtree"
# Now add the subtree
git subtree add -P chef-starter https://github.com/holms/chef-starter master --squash
該移植物chef-starter
回購進入chef-starter/
目錄在vagrant-starter
回購。從那時起,如果您選擇編輯子樹中的文件,則不必做任何特別的事情。例如,克隆後不必運行git submodule update
。
'git clone --recursive URL dir; cd dir; git submodule foreach'git checkout origin/master || :'' –
好的,當你在repo目錄上執行git status的時候,你會在執行最後一次簽出命令後看到「等待提交」。這是我不想要的。 – holms