清空Git仓库的所有提交记录,保留最后的版本使其变为“新库”

admin 2024-08-28 13:23:31 811

      开发过程中,如果出现下面的问题,比如:敏感信息泄露、许可和合规性问题、项目重构提高可维护性、保护商业机密、解决合并冲突、项目重启、教学或演示、纠正提交实践、法律或合同要求等等。

      又或者自己或其他方面特殊需求,需要保留仓库的部分属性(创建时间,说明,主页等),但需要清除历史记录,使其为“新库”,需要提供一个 在不删除原仓库的前提下,清除原仓库的所有历史提交记录(包含:分支、tag) 解决方案。

下面是清除 git 所有历史提交记录方案

1.使用 --orphan 选项创建新分支


语法:git checkout --orphan <new_branch>
使用 --orphan 选项,可创建1个"清洁"分支(无任何的提交历史,但是当前分支的内容一应俱全。但严格意义上说,这样创建的分支还不是一个真正的分支,因为HEAD指向的引用中没有commit值,只有在进行一次提交后,它才算得上真正的分支。

注意:

新的分支名可以随意命名,但不能和以前的分支名冲突。这儿特别强调是因为很多人习惯默认将分支名创建为 master.
本文以 latest_branch 作为新分支名,这个名称没有任何特殊含义,你可自定义,只要保证和以后的使用一致即可。

2.使用 git add . 添加所有文件


3. 提交代码:git commit -m "自定义提交说明"


4.删除原来的主分支(假设原来分支是master):git branch -D master


5.把当前分支重命名为master:git branch -m master


6.最后把代码推送到远程仓库:git push -f origin master

完整操作过程如下

# 用 --orphan 选项创建新分支
git checkout --orphan latest_branch
# 添加全部文件到待提交
git add -A
# 提交到本地
git commit -am "Init"
# 删除历史分支
git branch -D master
# 修改新分支为历史分支名字
git branch -m master
# 推送到远程
git push -f origin master
# 拉代码看看
git pull

# 查看是否生效了
git log --pretty=oneline
556fa274aa60ed81754d6f458f94d1b915ed9ab6 (HEAD -> master) init
(END)
可爱猫?Telegram电报群 https://t.me/ikeaimao

社区声明 1、本站提供的一切软件、教程和内容信息仅限用于学习和研究目的
2、本站资源为用户分享,如有侵权请邮件与我们联系处理敬请谅解!
3、本站信息来自网络,版权争议与本站无关。您必须在下载后的24小时之内,从您的电脑或手机中彻底删除上述内容
最新回复 (0)

您可以在 登录 or 注册 后,对此帖发表评论!

返回