使用git subtree管理子项目 v2
目录
之前一篇文章使用 git subtree
命令创建子项目,参见《使用git subtree管理子项目》。
Git 官方文档和 Github 的使用帮助中给出另外一种使用 subtree 创建子目录的方法,不再使用 git subtree
命令,而在 pull 中使用 subtree 策略。
与前文相似,下面在 nwpc-monitor-platform 项目中添加子项目 nwpc-hpc-model。
建立关联
在 nwpc-monitor-platform 中添加 nwpc-hpc-model 为远程分支。
/d/windroc/project/monitor/nwpc-monitor-platform (master)
$ git remote add -f hpc-model git@github.com:perillaroc/nwpc-hpc-model.git
Updating hpc-model
Enter passphrase for key '/c/Users/wangdp/.ssh/id_rsa':
From github.com:perillaroc/nwpc-hpc-model
* [new branch] master -> hpc-model/master
将 hpc-model 分支的历史合并到 master 分支中,这一步不改变本地文件,但可以为后续操作提供支持。
/d/windroc/project/monitor/nwpc-monitor-platform (master)
$ git merge -s ours --no-commit --allow-unrelated-histories hpc-model/master
Automatic merge went well; stopped before committing as requested
在 nwpc-monitor-platform 创建子项目的目录 nwpc-hpc-model。
/d/windroc/project/monitor/nwpc-monitor-platform (master|MERGING)
$ git read-tree --prefix=vendor/nwpc-hpc-model -u hpc-model/master
此时会创建 vendor/nwpc-hpc-model 目录,该目录就是nwpc-hpc-model子项目。
提交改动
/d/windroc/project/monitor/nwpc-monitor-platform (master|MERGING)
$ git commit
[master 554a2d4] Merge remote-tracking branch 'hpc-model/master'
获取更新
直接更新 hpc-model 分支,并与 master 合并。
/d/windroc/project/monitor/nwpc-monitor-platform (master)
$ git pull -s subtree hpc-model master
Enter passphrase for key '/c/Users/wangdp/.ssh/id_rsa':
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (1/1), done.
remote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0
Unpacking objects: 100% (5/5), done.
From github.com:perillaroc/nwpc-hpc-model
* branch master -> FETCH_HEAD
e2b4f42..74b2af9 master -> hpc-model/master
Merge made by the 'subtree' strategy.
vendor/nwpc-hpc-model/nwpc_hpc_model/loadleveler/value_saver.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
此时会将hpc-model整个历史合并到master中,后面会试一下--squash
参数,不再保留子项目的提交记录。