Git 创建一个完全没有提交历史的 master 分支
需求
本地有master、dev、test 等各个分支,远程公司代码库有 master 分支,现在不想让同事看到自己以前的提交记录,需要洗白
远程的 master 分支,让别人不知道自己的提交记录或者得到的是删除了重要文件后的版本。
使用孤儿分支(Orphan Branch)
它会创建一个没有任何历史的全新分支,然后将 dev
分支的内容放进去,使其看起来就像是项目的第一次提交。
步骤如下:
-
确保 dev 分支最新:
确保dev
分支包含了你想要保留的最终代码状态。git checkout dev git pull origin dev
-
创建全新的孤儿分支:
使用checkout --orphan
命令创建一个名为new_master
的新分支。这个分支是“孤儿”,意味着它不继承任何提交历史。git checkout --orphan new_master
执行后,你会发现分支虽然切换了,但工作区的文件还在,并且所有文件都处于“待添加”状态。
-
添加并提交所有文件:
将所有文件添加到暂存区,并创建一个新的提交。这将是这个全新分支的第一个,也是唯一一个提交。# 添加所有文件 git add -A# 创建提交 git commit -m "Initial commit"
-
删除旧的 master 分支:
为了避免混淆,可以先删除本地的旧master
分支。git branch -D master
-
重命名新分支:
将当前的新分支new_master
重命名为master
。git branch -m master
-
强制推送到远程仓库:
最后,将这个全新的、只有一次提交的master
分支强制推送到远程,覆盖掉旧的master
分支。git push -f origin master
强调
请仅在个人项目或你完全确定后果并已通知所有协作者的情况下执行此操作。对于大多数项目来说,保留完整的提交历史远比拥有一个“干净”的历史重要得多。