我想在GitHub上放置一个Git项目,但它包含某些带有敏感数据的文件(用户名和密码,比如/ config/deploy.rb for capistrano).
我知道我可以将这些文件名添加到.gitignore,但这不会删除他们在Git中的历史记录.
我也不想通过删除/.git目录重新开始.
有没有办法删除Git历史记录中特定文件的所有痕迹?
我知道这个问题有数千条线索。
但我发现了一些非常奇怪的事情。
如果您在 GitHub 上创建项目,请进行一些提交。
假设提交 1、2、3、4、5。
后来,您意识到要将某些内容更改为提交 3。
由于您在自己的分支中工作,因此重写历史记录没有问题。
所以让我们这样做:(基于这个stackoverflow 答案)
git rebase --interactive 'bbc643cd^'
// Modify 'pick' to 'edit' into interactive prompt and :
git commit --all --amend --no-edit
git rebase --continue
git push -f
Run Code Online (Sandbox Code Playgroud)
伟大的!错误已更正。历史已被重写,因此bbc643cd现在提交lkqjfhchc。
您可以在 GitHub 上查看源代码,一切都会更新。
但还是有人可以在 GitHub 上找到它!
访问 URL: https: //github.com/your-nickname/your-project/commit/bbc643cd ...(完整提交哈希),您就会找到它!
我们怎样才能永久删除这个提交呢?
谢谢你的帮助!