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

Stu*_*rty 6 git git-remote

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

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

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

J-1*_*DiZ 7

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

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

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

  2. 强制推送到远程.

    $ git push origin master --force

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

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


Sea*_*ira 2

这是一个三步过程:

  1. 从存储库副本中删除文件(无论是从历史记录中清除这些文件git rm还是完全从历史记录中清除这些文件,具体取决于这些文件从一开始就不会出现在存储库中的重要性)
  2. 使用 将您的更改推送回远程存储库git push --force
  3. 让每个人都知道他们可以重新拉取存储库 - 这将需要git rebase他们在最后一次知道良好的提交上进行工作。

作为最后一步,您可能还希望将.gitignore文件添加到存储库,以便在克隆存储库时,所有正确的文件都会被忽略。