如何删除GitHub提交及其历史记录?
问题描述:
我的朋友做了一个配置文件,拿着我们的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
+0
请注意,这(像所有历史重写)改变提交散列。这可能是一个主要问题,尤其是当你与他人合作时。此外,从历史记录中删除您的凭证是不够的。他们必须无效并重新创建。这降低了重写的价值。请小心。 – Chris
GitHub的帮助页面有一些关于正是这种情况下(私人信息推送到GitHub)...我会将它转换成一个答案,但我目前在移动[见这里...](https://help.github.com/articles/removing-sensitive-data-从存储库/) – Mischa
@MischaBehrend感谢!我想我没有在谷歌搜索正确的关键字哈哈 - 这是一个非常有用的页面 –