Git 创建一个完全没有提交历史的 master 分支

需求

本地有master、dev、test 等各个分支,远程公司代码库有 master 分支,现在不想让同事看到自己以前的提交记录,需要洗白远程的 master 分支,让别人不知道自己的提交记录或者得到的是删除了重要文件后的版本。

使用孤儿分支(Orphan Branch)

它会创建一个没有任何历史的全新分支,然后将 dev 分支的内容放进去,使其看起来就像是项目的第一次提交。

步骤如下:

  1. 确保 dev 分支最新:

    确保 dev 分支包含了你想要保留的最终代码状态。

    bash 复制代码
    git checkout dev
    git pull origin dev
  2. 创建全新的孤儿分支:

    使用 checkout --orphan 命令创建一个名为 new_master 的新分支。这个分支是"孤儿",意味着它不继承任何提交历史。

    bash 复制代码
    git checkout --orphan new_master

    执行后,你会发现分支虽然切换了,但工作区的文件还在,并且所有文件都处于"待添加"状态。

  3. 添加并提交所有文件:

    将所有文件添加到暂存区,并创建一个新的提交。这将是这个全新分支的第一个 ,也是唯一一个提交。

    bash 复制代码
    # 添加所有文件
    git add -A
    
    # 创建提交
    git commit -m "Initial commit"
  4. 删除旧的 master 分支:

    为了避免混淆,可以先删除本地的旧 master 分支。

    bash 复制代码
    git branch -D master
  5. 重命名新分支:

    将当前的新分支 new_master 重命名为 master

    bash 复制代码
    git branch -m master
  6. 强制推送到远程仓库:

    最后,将这个全新的、只有一次提交的 master 分支强制推送到远程,覆盖掉旧的 master 分支。

    bash 复制代码
    git push -f origin master

强调

请仅在个人项目或你完全确定后果并已通知所有协作者的情况下执行此操作。对于大多数项目来说,保留完整的提交历史远比拥有一个"干净"的历史重要得多。

相关推荐
vibecoding日记3 天前
为什么我就想要「线性历史 + Signed Commits」,GitHub 却把我当猴耍 🤬🎙️
git·编程工具
程序员小崔日记3 天前
如何将代码轻松上传到 Gitee?Git 使用全攻略!
git·gitee·上传
Bigger4 天前
为什么你的 Git 提交需要签名?—— Git Commit Signing 完全指南
git·开源·github
DianSan_ERP5 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
红豆子不相思5 天前
Tomcat 环境搭建与集群实战
服务器·git·tomcat
杰哥技术分享5 天前
Git 仓库迁移技术文档:从 CODING.net 迁移至腾讯云 CNB
git
梅孔立5 天前
Ansible 100 台服务器一键管控实战 进阶版
服务器·git·ansible
qq_426003965 天前
git切换当前分支到远程分支
git
ON10N6 天前
100% 纯 Vibe Coding,我是怎么用 AI 撸出一个 VS Code 插件的
git·ai编程·visual studio code