孤儿分支是什么
创建没有父提交的独立分支,用于静态站点发布(gh-pages)或独立制品,与主线历史互不干扰。首个提交没有父提交,因此该分支的 log、diff、合并行为都自成一体,理解这一点才不会误用。
基本信息
| 创建 | git checkout --orphan <分支>(新版 git switch --orphan) |
|---|---|
| 特点 | 首个提交无父提交,历史完全独立 |
| 典型用途 | gh-pages 站点、独立制品目录、独立声明分支 |
| 清理 | git rm -rf --cached . 清空索引但保留工作区文件 |
| 合并注意 | 与主线无共同祖先,合并会产生巨量差异,避免跨线操作 |
典型使用场景
- 搭静态站点:产物推到 gh-pages,站点内容不污染主历史。
- 独立制品:发布产物单独分支存放,供下载或部署。
- 历史重置:需要一个全新起点时用 orphan 从零开始。
- 文档站点:文档与主代码分分支管理,构建产物不进主线。
- 许可证或声明:需要独立历史的特殊分支。
- 多环境发布:不同环境的站点产物各用一个分支,互不干扰。
- CI 触发:把孤儿分支纳入发布流水线,产物更新自动化。
常用示例
常用示例
git checkout --orphan gh-pages # 创建无父提交的独立分支
git rm -rf --cached . # 清空索引,保留工作区文件
git add . # 重新暂存要发布的内容
git commit -m 'docs: init gh-pages'
git push -u origin gh-pages # 推送并在平台设为发布源适用与不适用
| 场景 | 是否适合 | 说明 |
|---|---|---|
| 站点产物 | 适合 | 与源码解耦,只存构建结果 |
| 源码协作 | 不适合 | 无共同历史,合并代价大 |
| 制品归档 | 适合 | 独立历史便于整体替换 |
平台通常允许把该分支设为 Pages 发布源,站点产物不污染主历史;忘记清空索引会把当前全部文件带进根提交,历史体积被无谓放大,推送前确认分支名与平台发布源配置一致。