git - 从 github 中删除文件

标签 git github rebase git-rewrite-history

我在一个项目中使用 github 已经有一段时间了,但只是作为一个问题跟踪器。所以,今晚我也花了一些时间来处理代码,并犯了一个菜鸟错误:我提交了凭证文件和其他不必要的数据。我现在已将它们添加到 .gitignore 文件中,它们应该不再是问题,但我看到它们在历史记录中可用。

这会带来安全问题,所以我必须解决这个问题并删除那里的敏感数据。我目前是唯一的开发人员,所以我只将代码保留在我的 PC 和实际服务器上,但我也想掌握它。

到目前为止,我已经尝试了this article , this one as well并在 SO 上发现了一些问题,但一直无法弄清楚。我经常遇到类似这样的错误:fatal: ambiguous argument 'rm': unknown revision or path not in the working tree.

我会删除整个存储库,但我在那里有很多问题跟踪数据,所以我需要保留它,所以这不是一个选项。我不介意其他提交,我可以使用本地机器上的代码从头开始,但需要一些方法来丢失旧提交及其完整历史记录,或者更改这些文件(.gitignore 中的某些内容) > 是目录,因此删除起来可能非常乏味)。

我尝试使用 git rebase -i,但我只看到最后三个提交(测试),它们没有被推送,其余的在线,其中 10 个左右没有推送不在那里显示。

我使用的 repo 是私有(private)的,只有我和一个客户可以访问,所以没有第 3 方看到这个。

我是 git 的新手,非常感谢您的时间和帮助!

最佳答案

首先,这里是重要的一点:考虑您的凭据已泄露。改变他们。此时无论您做什么,它们都不再安全。

现在你已经完成了,你有几个选择:

  • 如果您真的只想从头开始,请使用 git push --force 覆盖新提交的内容。这可能是您前进的最简单途径。

    git init <new-directory>
    $EDITOR README.md
    git add README.md
    git commit
    git remote add origin https://github.com/user/repo.git
    git push --force origin master
    
  • 或者,您可以使用 filter-branch 从历史记录中删除凭据,如 GitHub help page on removing sensitive data 中所述.

    您的 ambiguous argument 'rm' 错误很可能与正确引用命令有关。请确保按照文章中的显示方式引用它。

关于git - 从 github 中删除文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21031596/

相关文章:

c# - 使用 Octokit 更新 GitHub 存储库中的文件

git - 当我使用 Git 时,我应该在 merge 之前 rebase 吗?

Git 钩子(Hook)不工作

git - merge 两个分支和 Git 历史

eclipse - 使用 TFS 插件从 RSA 9.1 访问 GIT 存储库时出现内部错误

html - 如何在 README.md 中水平堆叠图像

git grep/搜索特定分支

git - 无法使用 ssh 克隆现有存储库,ssh 配置似乎没问题

git - 在 git 中 merge 拆分历史记录

git - 推送功能分支时无法推送某些引用