Git:如何删除本地以及远程仓库的历史提交记录
本文最后更新于 354 天前,其中的信息可能已经有所发展或是发生改变。

在我们的日常开发过程中,我们可能会不小心将一些敏感数据(例如密码或SSH密钥)提交到Git仓库中。这可能会带来一定的安全风险,因为即使你在后续的提交中删除了这些数据,它们仍然会在历史记录中留下痕迹。今天,我将介绍如何从Git仓库的历史记录中删除这些敏感数据。

注意: 一旦你将敏感数据提交到GitHub,就应该将这些数据视为已经泄露。如果你已经提交了密码,你应该更改这些密码。如果你已经提交了密钥,你应该生成新的密钥。删除泄露的数据并不能解决其初始暴露问题,尤其是在仓库的现有克隆或复刻中。

使用 git filter-repo

要删除包含敏感数据的文件,并将其添加到 .gitignore,以确保不会意外地重新提交,我们可以使用 git filter-repo

首先,我们需要安装 git filter-repo 工具的最新版本。 可以手动安装 git-filter-repo,也可以使用包管理器安装。 例如,若使用 HomeBrew 安装工具,请使用 brew install 命令。

brew install git-filter-repo

有关详细信息,请参阅 newren/git-filter-repo 存储库中的 INSTALL.md。

然后,我们需要将存储库克隆到本地计算机。如果存储库的本地副本的历史记录中没有敏感数据,我们可以直接使用以下命令:

$ git clone https://github.com/YOUR-USERNAME/YOUR-REPOSITORY

接着,我们需要导航到存储库的工作目录。

cd YOUR-REPOSITORY

然后运行删除历史提交的命令

git filter-repo --strip-blobs-bigger-than 0M

然后,你可以使用以下命令将更改推送回 GitHub:

git push origin --force --all

或者

git push origin --mirror --force
注意,使用 --force 或 --mirror 的时候需要非常小心,因为这将会重写你的远程仓库的历史,这个操作是不可逆的。在你执行这样的操作之前,确保你已经备份了你的代码和其他重要的数据。
知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇