如何不使用submodules在Git仓库中嵌套多个独立的Git仓库
Git嵌套独立仓库不被识别为submodule的搭建方案
核心实现逻辑
只要让外层基础仓库完全忽略内部项目仓库所在的目录内容,外层Git就不会检测到内部的.git仓库文件,自然不会自动生成submodule关联。
具体搭建步骤
- 第一步:配置基础仓库的忽略规则
在基础仓库(也就是你规划的myTeam目录)根目录下创建/编辑.gitignore文件,添加以下规则:
# 忽略projects目录下的所有内容 /projects/* # 保留.gitkeep文件,确保空的projects目录可以被提交到基础仓库 !/projects/.gitkeep
- 第二步:初始化基础仓库目录结构
按照你规划的层级创建tools、clientDocumentation、projects三个目录,在projects目录下创建空的.gitkeep占位文件:
touch projects/.gitkeep
之后把基础仓库需要托管的工具、客户文档等内容提交推送到远端即可。
- 第三步:编写项目按需拉取脚本
你可以在基础仓库的tools目录下编写拉取脚本,示例脚本clone_project.sh内容如下:
#!/bin/bash # 按需克隆项目脚本 if [ $# -ne 1 ];then echo "用法: ./clone_project.sh 项目名(如project1)" exit 1 fi # 替换为你团队的项目仓库公共前缀 GIT_REPO_PREFIX="git@你的Git服务地址:团队组名/" PROJECT_NAME="$1" cd projects || exit 1 git clone "${GIT_REPO_PREFIX}${PROJECT_NAME}.git"
给脚本添加执行权限后提交到基础仓库:
chmod +x tools/clone_project.sh
使用说明
新成员入职只需要克隆基础仓库,获取对应项目权限后,执行./tools/clone_project.sh project1就能把对应项目拉取到projects目录下,内层项目仓库完全独立,所有Git操作互不干扰,外层基础仓库完全不会识别到内层项目的存在,自然不会生成submodule关联。
内容的提问来源于stack exchange,提问作者Kasper Jan Mooijman
相关产品推荐
相关产品推荐

