git高级功能
AI 总结AI 生成
核心内容:介绍Git的高级功能,包括删除历史提交中的文件和使用Git子模块管理多仓库项目。
内容要点:
- 使用 git filter-repo 删除历史提交中的指定文件
- 通过 Git Submodule 拆分多仓库并隔离权限
- GitLab CI 中的子模块初始化、更新与环境目录约定
适合在工程配置、版本管理和开发环境搭建时查阅。
git
git submodule
删除历史提交里的文件
前言
在多仓库项目中,可以把不同环境或模块拆成子仓库,再通过 Git Submodule 组合到主仓库中。这样既能隔离权限,也能让部署服务器只拉取自己需要的仓库内容。
出于安全或权限隔离考虑,可以为每个子仓库配置独立账号,分别授予主仓库和子仓库对应的访问权限。部署服务器上使用这些账号拉取代码,避免把过大的全局权限放进同一个凭证里。
Tip
在 .gitmodules 文件中,建议将子模块 URL 改成相对路径。这样主仓库地址变更时,子模块不需要逐个调整。
GitLab 实现方式
以下步骤不包括账号权限配置。
.gitlab-ci.yml
本地克隆
首次克隆
首次拉取主仓库后,需要初始化子模块,再按环境更新对应目录。
后续更新
主仓库更新后,再同步子模块到远程分支最新提交。
添加子模块
新增子模块时,把不同环境放到约定目录,便于 CI/CD 按 ${ENV} 变量选择部署内容。
