Git 清空提交记录

摘要

有时候我们经常会提交敏感信息到仓库里面,但是修改之后提交也能在提交记录里面找到文件的信息。有几种方法可以清除记录,这里记录一下对我最有用的操作。

完全清空操作

这种方法会完全删除光所有的提交记录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 新建一个孤立分支
git checkout --orphan latest

// 然后保存操作
git add.

// 提交到缓存
git commit -m "xxxx:xxxx"

// 删除master或者指定的分支
git branch -D master

// 重命名latest分支为master
git branch -m master

// 提交到master或者指定分支(或者强制提交)
git push -f origin master

保留到指定的记录(替换)

1
2
3
4
5
// 确保你在包含需要删除提交的分支上。如果不是,请切换到正确的分支。
git checkout <your_branch_name>

//运行以下命令启动交互式 rebase。这里的 <commit_sha> 是需要删除的提交的前一个提交的哈希值。
git rebase -i <commit_sha> //例如 git rebase -i abc1234

编辑 rebase 文件: 一个交互式 rebase 文件会在编辑器中打开。对于需要删除的提交,将单词 pick 改为 edit 或者简写为 e。

1
2
3
4
5
// 源代码记录
pick abc1234 Your commit message

// 改成
edit abc1234 Your commit message
1
2
3
4
5
6
7
8
//在执行了 git rebase -i 命令后,Git 会停在你指定的提交(这里是 <commit_sha> 所对应的提交)。在这个点上,你可以进行修改。删除文件或进行其他修改,然后将更改添加到暂存区
git add .

git rebase --continue
//当 rebase 完成时,可能会有冲突需要解决。根据 Git 的提示,可能需要运行 git rebase --continue 或 git rebase --skip。

//因为你修改了提交历史,所以需要强制推送到远程仓库:
git push origin <your_branch_name> --force