git subtree使用

本文介绍如何使用gitsubtree在主项目中引入并同步子项目。包括配置远程仓库别名、添加子项目到主项目、同步子项目更新及推送修改回子项目的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在一个git项目下引用另一个项目的时,我们可以使用 git subtree。使用 git subtree 时,主项目下包含子项目的所有代码。

使用 git subtree 主要关注以下几个功能

  1. 一个项目A下如何引入另一个项目B
  2. 如果 B 有更新,如何同步到 主项目 A 中
  3. 如果在项目A中修改了B的代码,如何将修改的代码同步到 B中

下面详细说明

  1. 假设我们有一个项目名字叫 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
  1. 如果之后 sub_proj 有更新,咋整呢?
git subtree pull -P path/to/your/dir sub_proj main
  1. 如果我们在 proj 的开发过程中,修改了 sub_projsub_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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值