submodule就是在你的git裡面記錄一下你引用到的其他模組的資訊。
over。。。。
啥,這就over了。
對,木有錯。就那麼簡單。
本質上和你手動copy一個reposit過來到你的工程目錄,再拿個小本本記下來這個reposit是從哪裡偷來的,木有啥區別。
只是,大家用多了發現這樣不方便,於是就,給git一個submodule的命令。來便於操作。
以上雖然有很多的胡扯部分,但是本質就是那樣。下面分幾點說明 主程式碼程式庫與子程式碼程式庫是相互獨立的
你的工程和你submodule,沒有啥關係。你只是用到人家的代碼而已,為了便於管理git整合submodule命令,這個命令完全可以用其他方式(比如指令碼)來代替。
submodule就一個git項目,該怎麼更新同步就怎麼更新同步,別老想著從你的工程去管理別人的submodule,考慮問題的思路就不對。
(我需要從linux核心項目來敲命令跟新Apache項目嗎。。。。。,需要嗎。。。,我有可能2個都用啊)
雖然;
1. submodule的倉庫也是在你工程的.git/modules的檔案夾下面
2. 提供submodule這個便捷的命令 主程式碼程式庫引用的是子程式碼程式庫的提交(commit)而不是分支(branch)
你項目建立的時候一定只是引用某個版本的submodule(對應到commit),而不是某個分支。所以預設都是detached from XXXXX(commit id);
因為,很可能人家提供submodule的人,過幾天提交的檔案會導致你當前工程完全不可用。。。。 手工維護子程式碼程式庫
上面預設的是最普遍的方式,但是也可能你的submodule就是自己維護的,可控。
那麼這幾個命令完全可以搞定(記不住木有關係,大不了多敲幾行普通命令而已,俺就最頭痛記命令)
(note:從overflow上面偷來的)
# add submodule to track master branchgit submodule add -b master [URL to Git repo];# update your submodulegit submodule update --remote
參考:
git submodule的使用
Git Submodule使用完整教程