使用git subtree管理子仓库

鸿辰 Git 2.82 K

说明

最近在使用一个仓库统一管理其他子仓库的代码,降低在平时维护的成本,做了以下的梳理

介绍

  • git gitmodule有一定区别,可以在网上查阅相关资料
  • 必须要学会使用git subtree的相关命令,因为即便是windwos的 TortoiseGit 也不带界面操作功能,常用的命令在下文会列出

常用命令

为了便于理解,这里准备两个测试仓库说明

# 主仓库,地址为 https://git/father.git
father
    |
    |--src # 子仓库统一存放目录
    |-- 代码文件
    |-- README.md

# 子仓库,地址为 https://git/children.git
children
    |
    |-- 代码文件
    |-- README.md
  • 在父仓库中新增子仓库
      # 简化后续操作命令,减少每次要输入仓库地址的繁琐操作
      git remote add -f children https://git/children.git
      # 添加子仓库到父仓库
      git subtree add --prefix=src/children children main --squash
  • 从源仓库拉取更新
    用于子仓库源更新,在主仓库拉取更新
      git subtree pull --prefix=src/children children main --squash
  • 推送修改到源仓库
    用户在主仓库中做了修改,推送到子仓库
      git subtree push --prefix=src/children children main