在一个git项目下引用另一个项目的时,我们可以使用 git subtree。使用 git subtree
时,主项目下包含子项目的所有代码。
使用 git subtree
主要关注以下几个功能
proj
. 现在想再该项目中引入另一个 git 项目 sub_proj
。操作步骤为cd proj/
# 1. 先为远程子仓库配置一个别名,便于后续的 pull 与 push 操作,这里例子以 sub_proj 为别名
git remote add sub_proj git@github.com:xx/sub_proj.git
# 2. 其中 --prefix= 简写为 -P,配置 --squash 表示不拉取子仓库的历史提交记录
# -P 用来指定:拉下来的代码 放到哪个目录下
# 该指令只能在 proj/ (即:主项目根目录) 下执行。 该指令就开始拉取 sub_proj 的 main 分支了
git subtree add -P path/to/your/dir --squash sub_proj main
sub_proj
有更新,咋整呢?git subtree pull -P path/to/your/dir sub_proj main
proj
的开发过程中,修改了 sub_proj
, sub_proj
的代码如何同步到 git
上呢?git add -u
git commit -m "some modification"
git push origin main # 这个是往 proj 上提交改动
git subtree push -P path/to/your/dir sub_proj main # 这个是往 sub_proj提交改动
https://gb.yekai.net/concepts/subtree-vs-submodule http://www.cocoachina.com/articles/6161 https://segmentfault.com/q/1010000000670427