首页/开发/Git 与协作速查/孤儿分支(gh-pages 等独立历史)

孤儿分支(gh-pages 等独立历史)

创建没有父提交的独立分支,用于静态站点发布(gh-pages)或独立制品,与主线历史互不干扰。

Git 与协作速查开发更新于 2026-10-13

孤儿分支是什么

创建没有父提交的独立分支,用于静态站点发布(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 发布源,站点产物不污染主历史;忘记清空索引会把当前全部文件带进根提交,历史体积被无谓放大,推送前确认分支名与平台发布源配置一致。

易错点

  • 忘记清空索引会把当前全部文件带进根提交,历史体积被无谓放大,创建后先确认暂存区状态。
  • 孤儿分支与主线无共同祖先,跨分支 cherry-pick 会引入全量差异,别拿它当普通分支合并。
  • 把孤儿分支误合并进主线(或反向)会产生大量冲突式差异,操作前确认两端约定。
  • 发布源切换到孤儿分支后,旧分支的构建触发规则仍可能在跑,配置要同步更新,避免产物推到已废弃的分支上。

数据来源与参考

  • GitHub 官方文档:配置发布源(Pages)
  • Git 官方文档:git-checkout(--orphan)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌