最近在做博客的時候,用到了其他的themes诞帐,因為配置,所以需要修改themes里面的代碼爆雹,這時候有兩種做法停蕉,一種是直接把代碼下到本地,然后將代碼直接拷貝項目中钙态,另一種是用git做管理慧起,項目中添加子項目。我先做的是先fork該theme一份册倒,然后git我fork下來的這個項目蚓挤。具體做法如下
添加子項目
git submodule add [address]
$ git submodule add https://github.com/chaconinc/DbConnector
Cloning into 'DbConnector'...
remote: Counting objects: 11, done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 11 (delta 0), reused 11 (delta 0)
Unpacking objects: 100% (11/11), done.
Checking connectivity... done.
默認情況下,子模塊會將子項目放到一個與倉庫同名的目錄中驻子,本例中是 “DbConnector”灿意。 如果你想要放到其他地方,那么可以在命令結(jié)尾添加一個不同的路徑拴孤。
自動初始化并更新倉庫中的每一個子模塊
$ git clone --recursive https://github.com/chaconinc/MainProject
Cloning into 'MainProject'...
remote: Counting objects: 14, done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 14 (delta 1), reused 13 (delta 0)
Unpacking objects: 100% (14/14), done.
Checking connectivity... done.
Submodule 'DbConnector' (https://github.com/chaconinc/DbConnector) registered for path 'DbConnector'
Cloning into 'DbConnector'...
remote: Counting objects: 11, done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 11 (delta 0), reused 11 (delta 0)
Unpacking objects: 100% (11/11), done.
Checking connectivity... done.
Submodule path 'DbConnector': checked out 'c3f01dc8862123d317dd46284b05b6892c7b29bc'
在包含子模塊的項目上工作
如果我們在主項目中提交并推送但并不推送子模塊上的改動,其他嘗試檢出我們修改的人會遇到麻煩甲捏,因為他們無法得到依賴的子模塊改動演熟。 那些改動只存在于我們本地的拷貝中。
為了確保這不會發(fā)生,你可以讓 Git 在推送到主項目前檢查所有子模塊是否已推送芒粹。 git push 命令接受可以設(shè)置為 “check” 或 “on-demand” 的 --recurse-submodules 參數(shù)兄纺。 如果任何提交的子模塊改動沒有推送那么 “check” 選項會直接使 push 操作失敗。
$ git push --recurse-submodules=check
The following submodule paths contain changes that can
not be found on any remote:
DbConnector
Please try
git push --recurse-submodules=on-demand
or cd to the path and use
git push
to push them to a remote.
如你所見化漆,它也給我們了一些有用的建議估脆,指導接下來該如何做。 最簡單的選項是進入每一個子模塊中然后手動推送到遠程倉庫座云,確保它們能被外部訪問到疙赠,之后再次嘗試這次推送。
另一個選項是使用 “on-demand” 值朦拖,它會嘗試為你這樣做圃阳。
$ git push --recurse-submodules=on-demand
Pushing submodule 'DbConnector'
Counting objects: 9, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (8/8), done.
Writing objects: 100% (9/9), 917 bytes | 0 bytes/s, done.
Total 9 (delta 3), reused 0 (delta 0)
To https://github.com/chaconinc/DbConnector
c75e92a..82d2ad3 stable -> stable
Counting objects: 2, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 266 bytes | 0 bytes/s, done.
Total 2 (delta 1), reused 0 (delta 0)
To https://github.com/chaconinc/MainProject
3d6d338..9a377d1 master -> master
如你所見,Git 進入到 DbConnector 模塊中然后在推送主項目前推送了它