快速清理 Git 提交记录的方法

在 Git 版本控制系统里,有时为了让仓库更加整洁,或者删除其中包含的敏感信息,我们需要对提交记录进行清理。下面为你介绍几种常见的清理 Git 提交记录的方法。

创建新分支并删除历史记录

1. 创建新的孤儿分支

借助 --orphan 选项,能够创建一个没有任何历史记录的新分支。

1
git checkout --orphan new_branch

2. 添加所有文件

将当前目录下的所有文件添加到新的分支中。

1
git add -A

3. 提交代码

提交这些文件。

1
git commit -m "Initial commit"

4. 删除原来的主分支

删除旧的主分支(通常是 master)。

1
git branch -D master

5. 重命名当前分支为主分支

将新的分支重命名为 master。

1
git branch -m master

6. 强制推送到远程仓库

将新的主分支强制推送到远程仓库。

1
git push -f origin master

使用 git filter-branch 清理大文件

如果需要清理历史记录中的大文件,可以使用 git filter-branch 命令。

1. 找到大文件的哈希值

使用以下命令找到大文件的哈希值。

1
git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -g | tail -5

2. 根据哈希值找到对应文件

使用以下命令找到对应的大文件名。

1
git rev-list --objects --all | grep <hash>

3. 删除大文件并清理历史记录

使用 git filter-branch 命令删除大文件并清理历史记录。

1
git filter-branch --index-filter 'git rm --cached --ignore-unmatch <file>' --prune-empty --tag-name-filter cat -- --all

4. 清理多余信息并压缩仓库

1
rm -rf .git/refs/original/ git reflog expire --expire=now --all git gc --aggressive --prune=now

使用 git rebase 删除特定提交

1. 查看历史提交记录

使用 git log 查看提交记录,并找到要删除的提交的哈希值。

1
git log

2. 交互式 rebase

使用 git rebase -i 进行交互式 rebase。

1
git rebase -i <commit-hash>

3. 删除提交

在编辑器中,将要删除的提交前的 pick 改为 drop,保存并关闭编辑器。

通过以上方法,可以有效地清理 Git 仓库中的提交记录,保持仓库的整洁和安全


快速清理 Git 提交记录的方法
http://days.onross.com/b9e03329.html
作者
Ross
发布于
2025年4月9日
许可协议