清除Github提交歷史記錄

(題圖 by Alex Vasey on Unsplash)

昨天提交代碼到Github倉庫時,不小心把敏感信息(登陸賬號和登陸密碼)提交了上去。發現後立馬在Github上修改源代碼,將裡面的敏感信息刪除,刪除後查看這個文件的歷史操作記錄,包含敏感信息的歷史版本仍然存在。

以為刪除文件可以解決這個問題,然而並非如此,把整個文件刪除後,歷史記錄並沒有被清空,反而增多一條刪除文件的操作,前面兩步操作的記錄仍然存在。

網上搜了一大圈解決辦法,最終找到的解決辦法如下。


1.將Repository使用git clone到本地,在終端使用"git log"查看提交記錄。Github會為每一次commit操作生成哈希值,用這個哈希值來記錄你的提交記錄。

JacksonShawnMBP:learning-python jacksonshawn$ git logcommit 69658b34013ae1a894f84e161c326a3b5b63f05fAuthor: 大西洋暖流 <xc0910@hotmail.com>Date: Thu Mar 22 18:35:26 2018 +0800 Delete python_learning_crawler_laidu_new.pycommit fa3aa61aa04c90afa5bef3e27f8a0eb80388b6bfAuthor: 大西洋暖流 <xc0910@hotmail.com>Date: Thu Mar 22 18:32:03 2018 +0800 Update python_learning_crawler_laidu_new.pycommit 0f6f7b72667830e407880271e6ebc24abba232c5Author: 大西洋暖流 <xc0910@hotmail.com>Date: Thu Mar 22 18:31:21 2018 +0800 Add files via uploadcommit 8628628991470b26e698d98e986a54fa6b5f4352Author: 大西洋暖流 <xc0910@hotmail.com>Date: Thu Mar 22 18:30:01 2018 +0800 Create README.md

2.定位你誤操作的那一個版本,我上傳包涵敏感信息的操作是"0f6f7b72667830e407880271e6ebc24abba232c5"。我們取它之前的版本,就是哈希值為"8628628991470b26e698d98e986a54fa6b5f4352"的那一版本。

3.使用"git reset —hard 8628628991470b26e698d98e986a54fa6b5f4352"操作,將歷史記錄重置到這個版本。

JacksonShawnMBP:learning-python jacksonshawn$ git reset --hard 8628628991470b26e698d98e986a54fa6b5f4352HEAD is now at 8628628 Create README.md

4.使用"git push origin HEAD —force",PUSH到github。

JacksonShawnMBP:learning-python jacksonshawn$ git push origin HEAD --forceTotal 0 (delta 0), reused 0 (delta 0)To https://github.com/benbendemo/learning-python.git + 0f6f7b7...8628628 HEAD -> master (forced update)

5.查看Github倉庫,版本號被重置到我指定的"8628628991470b26e698d98e986a54fa6b5f4352"版本,最新標籤號被回退為"8628628"。

6.查看這個Repository的歷史記錄,前面幾步操作的歷史記錄也都被清除掉,這樣就解決了泄漏敏感信息的風險。??

我沒有參照Github官網這篇文章Removing sensitive data from a repository給出的指示進行操作,原因是我的情況不符合文中描述的內容。因為我在發現上傳敏感信息後,直接將帶敏感信息的整個文件刪掉過,這篇文章給出的指示操作有一個要求是,帶敏感信息的文件沒有被刪除,才可按照它的方法清楚歷史記錄。

微信公眾號:大西洋暖流

推薦閱讀:

【Trac】瀏覽器中查看源碼庫
聊聊 Git 「改變歷史」
Git由淺入深之細說變基(rebase)
Git 在window下的搭建
分支的整合:git rebase Or git merge

TAG:Git | 密碼清除 | GitHub |