如何从git bare remote repository中删除文件?

时间:2012-09-07 03:29:26

标签: git git-remote

我有一个远程裸git存储库。

一位新开发人员克隆了它,但他没有正确配置的.gitignore文件,所以他错误地将一些不需要的文件推入了遥控器。当我提取并合并时,我得到了这些以前没有跟踪过的文件。其他人也从遥控器中取出了更改,并且还有这些不需要的文件。

如何从远程存储库以及其他所有人的远程/源/分支中删除这些文件?

2 个答案:

答案 0 :(得分:7)

请参阅github上的常见问题解答:https://help.github.com/articles/remove-sensitive-data 以下是步骤:

  1. 从本地(工作)树重写树。

    $ git filter-branch --index-filter'git rm --cached --ignore-unmatch Rakefile'\  --prune-empty --tag-name-filter cat - --all

  2. 强行推送到远程。

    $ git push origin master --force

  3. 每个人都从遥控器拉出来(如果需要,请使用--force

  4. 为了防止再次发生这种情况,您应该检查存储库中的.gitignore(并可选择在服务器上设置挂钩)

答案 1 :(得分:2)

这是一个三步过程:

  1. 从您的存储库副本中删除文件(使用git rmtotally purging these files from your history,具体取决于这些文件从未首先存放在存储库中的重要性。)
  2. 使用git push --force将更改推送回远程存储库。
  3. 让每个人都知道他们可以重新提取存储库 - 这需要git rebase他们对最后知道的良好提交的工作。
  4. 作为最后一步,您可能还需要将.gitignore文件添加到存储库,以便在克隆存储库时忽略所有正确的文件。