You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Git的master分支中创建多个无父节点的初始提交?

实现方法

你可以通过两种方式创建多个无父节点的根提交,再合并到master分支即可达成需求:

方法一:使用git checkout --orphan创建孤儿分支(适合新手操作)

  • 先初始化新的Git仓库,完成第一次master分支的初始提交
    git init test-repo
    cd test-repo
    echo "init" > readme.md
    git add .
    git commit -m "根提交1"
    
  • 创建无父节点的孤儿分支,孤儿分支创建后暂存区会保留当前工作区内容,不需要的话可以手动清空
    git checkout --orphan temp-branch
    git rm -rf . # 清空暂存区和工作区,避免继承之前的文件
    
  • 在孤儿分支上提交内容,此时这个提交就是无父节点的新根提交
    echo "新根提交内容" > new-file.md
    git add new-file.md
    git commit -m "根提交2"
    
  • 切回master分支,将这个孤儿分支的根提交合并到master,允许不相关历史合并
    git checkout master
    git merge temp-branch --allow-unrelated-histories
    
  • 重复上述孤儿分支创建、提交、合并的操作,就能在master分支的提交历史里加入多个无父节点的根提交。如果不需要保留临时孤儿分支,合并完成后可以执行git branch -D temp-branch删除。

方法二:使用Git底层命令git commit-tree直接生成根提交(更灵活)

如果你熟悉Git底层原理,可以直接通过commit-tree命令创建无父的提交对象,直接将提交绑定到master分支:

  • 先准备好要提交的文件内容,添加到暂存区后获取树对象哈希
    echo "根提交3内容" > third.md
    git add third.md
    git write-tree # 执行后会输出树对象的哈希值,记下来后面用
    
  • 直接创建无父节点的提交,把上一步得到的树哈希替换到命令对应位置
    git commit-tree 替换为上一步输出的树哈希 -m "根提交3"
    # 执行后会输出新的提交哈希,记下来
    
  • 将master分支指向新生成的根提交和原有提交的合并结果:
    git merge 上一步输出的提交哈希 --allow-unrelated-histories
    

操作完成后你可以执行git log --graph --oneline查看提交拓扑,就能看到多个无父节点的根提交都被合并到了master分支上。如果执行合并时报错,确认你的Git版本在2.9及以上,该版本才正式支持--allow-unrelated-histories参数处理不相关历史的合并。

内容的提问来源于stack exchange,提问作者Andy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 20:57:02