2019年3月8日 星期五

[git] git submodule

git submodules
井民全, Jing, mqjing@gmail.com

Add a git repository

# add an existing Git repository and treat the commit as a directory entry
$ git submodule add https://github.com/chaconinc/DbConnector connect

Clone Code

$ git clone $myproject_that_includes_submodules
$ git submodule init                      # initialize the configuration
$ git submodule update                # feach the commit from the repositories
or
$ git clone --recurse-submodules $myproject_that_includes_submodules

Pull the Upstream changes

$ git fetch
$ git merge origin/master    # 我要merge 上面最新的 master code, 到 local 來

看哪些 submodule 改了, 上了哪些 commit
git diff --submodule

一次 update 所有的 submodules 中的內容

$ git submodule update --remote     # 預設是拉 master code 進來 (only fetch and update, no merge)

指定拉某一個 branch 的 code 進來
$ git config -f .gitmodules submodule.DbConnector.branch stable
$ git submodule update --remote   # 設定拉 stable branch 的 code 進來

設定 git status 讓它連同顯示 submodule 的更新狀態

$ git config status.submodulesummary 1

查看 commit log

$ git log -p --submodule


Featch, Update 順便 merge 到現有的 code

$ git submodule update --remote --merge



Reference