找回密码
 立即注册
首页 业界区 业界 Git使用经验总结8-Git仓库历史记录清除

Git使用经验总结8-Git仓库历史记录清除

乳杂丫 2025-11-23 21:45:02
1. 引言

因为一些原因,Git 历史提交记录中会包含一些敏感信息,比如名字、邮箱、代码等等,因此就想将这些历史记录删掉。删除特定的历史提交记录还是很困难的,笔者这里的做法是干脆彻底清除 Git 历史记录,只保留当前工作目录的最新快照,重新开始一个干净的提交历史。这样做还有一个好处,就是可以改善当前的 Git 仓库体积,尤其是对于 Git 提交历史不太重要的仓库而言。
2. 方案

在进行操作之前先备份好仓库,然后进入项目目录:
  1. cd /path/to/your/project
复制代码
删除现有的 .git 目录,这会清除所有 Git 历史:
  1. rm -rf .git
复制代码
重新初始化 Git 仓库:
  1. git init
复制代码
切换到主分支:
  1. git checkout -b main
复制代码
如果有需要,设置新的用户名和邮箱:
  1. git config user.name "your-github-username"
  2. git config user.email "your-github-username@users.noreply.github.com"
复制代码
添加所有文件并提交:
  1. git add .
  2. git commit -m "Initial commit (clean snapshot)"
复制代码
强制推送到 GitHub,覆盖远程仓库:
  1. # 先关联远程仓库(如果之前有)
  2. git remote add origin https://github.com/your-username/your-repo.git
  3. # 强制推送(--force 或 -f)
  4. git push --force --set-upstream origin main
复制代码
注意在这个流程中,也可以不一次提交所有的文件。由于网络的原因,一次提交内容太大可能会失败,可以先提交一个文件即可。等确定git push成功后就可以按照正常的步骤进行提交了。并且后续提交如果 Git 仓库的单个文件很大,可以写个脚本一个一个提交,这样更加稳妥一些。笔者使用的脚本如下:
[code]# submit-files-one-by-one.ps1# 获取当前目录下所有文件(不包括子目录)$files = Get-ChildItem -Path . -Fileif ($files.Count -eq 0) {    Write-Host "⚠️  当前目录下没有文件。" -ForegroundColor Yellow    exit 0}# 确保在 main 分支git checkout main 2>$nullif ($LASTEXITCODE -ne 0) {    Write-Host "❌ 无法切换到 main 分支。请确保已初始化仓库并创建 main 分支。" -ForegroundColor Red    exit 1}# 远程仓库地址(自动获取)$remoteUrl = git remote get-url origin 2>$nullif (-not $remoteUrl) {    Write-Host "❌ 未设置远程仓库 origin。请先运行:git remote add origin " -ForegroundColor Red    exit 1}Write-Host "
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册