2017-07-07 255 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

相关问题