(Photo by Alex Vasey on Unsplash)
昨天提交代码到GitHub仓库时,不小心把敏感信息(登陆账号和登陆密码)提交了上去。发现后立马在GitHub上修改源代码,将里面的敏感信息删除,删除后查看这个文件的历史操作记录,包含敏感信息的历史版本仍然存在。
以为删除文件可以解决这个问题,然而并非如此,把整个文件删除后,历史记录并没有被清空,反而增多一条删除文件的操作,前面两步操作的记录仍然存在。
网上搜了一大圈解决办法,最终找到的解决办法如下。
1.将Repository使用git clone到本地,在终端使用“git log”查看提交记录。GitHub会为每一次commit操作生成哈希值,用这个哈希值来记录你的提交记录。
|
|
2.定位你误操作的那一个版本,我上传包涵敏感信息的操作是“0f6f7b72667830e407880271e6ebc24abba232c5”。我们取它之前的版本,就是哈希值为“8628628991470b26e698d98e986a54fa6b5f4352”的那一版本。
3.使用“git reset —hard 8628628991470b26e698d98e986a54fa6b5f4352”操作,将历史记录重置到这个版本。
|
|
4.使用“git push origin HEAD —force”,PUSH到GitHub。
|
|
5.查看GitHub仓库,版本号被重置到我指定的“8628628991470b26e698d98e986a54fa6b5f4352”版本,最新标签号被回退为“8628628”。
6.查看这个Repository的历史记录,前面几步操作的历史记录也都被清除掉,这样就解决了泄漏敏感信息的风险。😊
我没有参照GitHub官网这篇文章Removing sensitive data from a repository给出的指示进行操作,原因是我的情况不符合文中描述的内容。因为我在发现上传敏感信息后,直接将带敏感信息的整个文件删掉过,这篇文章给出的指示操作有一个要求是,带敏感信息的文件没有被删除,才可按照它的方法清楚历史记录。