2017-07-07 252 views
5

我的朋友做了一個配置文件,拿着我們的apikey/token/secrets,並且.gitignore忽略所述文件。有人不小心將配置文件保存爲另一個名稱,並且現在正在顯示,並被推送到主分支。如何刪除GitHub提交及其歷史記錄?

我想知道是否有辦法刪除該提交和該提交的歷史記錄。

我已經看到這個(下面),我明白這將刪除的承諾和重新推動一切。 它仍然顯示了通過歷史/修改的配置信息:

git reset --hard hash# 

git push -f origin branch 
+0

GitHub的幫助頁面有一些關於正是這種情況下(私人信息推送到GitHub)...我會將它轉換成一個答案,但我目前在移動[見這裏...](https://help.github.com/articles/removing-sensitive-data-從存儲庫/) – Mischa

+0

@MischaBehrend感謝!我想我沒有在谷歌搜索正確的關鍵字哈哈 - 這是一個非常有用的頁面 –

回答

2

git-filter-branch可以幫助你在你的情況,如下:

與路徑替換PATH-TO-YOUR-CONFIG-FILE您要刪除您的配置文件,不只是它的文件名。

git filter-branch --force --index-filter \ 
'git rm --cached --ignore-unmatch PATH-TO-YOUR-CONFIG-FILE' \ 
--prune-empty --tag-name-filter cat -- --all 

添加您的配置文件,以.gitignore,以確保您不小心再次提交,提交和推,按以下命令:

echo "YOUR-CONFIG-FILE" >> .gitignore 
git add .gitignore 
git commit -m "Add YOUR-CONFIG-FILE to .gitignore" 
git push origin --force --all 
+0

請注意,這(像所有歷史重寫)改變提交散列。這可能是一個主要問題,尤其是當你與他人合作時。此外,從歷史記錄中刪除您的憑證是不夠的。他們必須無效並重新創建。這降低了重寫的價值。請小心。 – Chris

相關問題