我的朋友做了一個配置文件,拿着我們的apikey/token/secrets,並且.gitignore
忽略所述文件。有人不小心將配置文件保存爲另一個名稱,並且現在正在顯示,並被推送到主分支。如何刪除GitHub提交及其歷史記錄?
我想知道是否有辦法刪除該提交和該提交的歷史記錄。
我已經看到這個(下面),我明白這將刪除的承諾和重新推動一切。 但它仍然顯示了通過歷史/修改的配置信息:
git reset --hard hash#
git push -f origin branch
我的朋友做了一個配置文件,拿着我們的apikey/token/secrets,並且.gitignore
忽略所述文件。有人不小心將配置文件保存爲另一個名稱,並且現在正在顯示,並被推送到主分支。如何刪除GitHub提交及其歷史記錄?
我想知道是否有辦法刪除該提交和該提交的歷史記錄。
我已經看到這個(下面),我明白這將刪除的承諾和重新推動一切。 但它仍然顯示了通過歷史/修改的配置信息:
git reset --hard hash#
git push -f origin branch
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
請注意,這(像所有歷史重寫)改變提交散列。這可能是一個主要問題,尤其是當你與他人合作時。此外,從歷史記錄中刪除您的憑證是不夠的。他們必須無效並重新創建。這降低了重寫的價值。請小心。 – Chris
GitHub的幫助頁面有一些關於正是這種情況下(私人信息推送到GitHub)...我會將它轉換成一個答案,但我目前在移動[見這裏...](https://help.github.com/articles/removing-sensitive-data-從存儲庫/) – Mischa
@MischaBehrend感謝!我想我沒有在谷歌搜索正確的關鍵字哈哈 - 這是一個非常有用的頁面 –