代码之家  ›  专栏  ›  技术社区  ›  Stuarty

如何从git bare远程存储库中删除文件?

  •  6
  • Stuarty  · 技术社区  · 12 年前

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

    一位新的开发人员克隆了它,但他没有正确配置的.gitignore文件,所以他错误地将一些不需要的文件推送到了远程。当我提取更改并合并时,我得到了这些以前未跟踪的文件。其他人也从远程获取了更改,并拥有这些不需要的文件。

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

    2 回复  |  直到 8 年前
        1
  •  7
  •   J-16 SDiZ    12 年前

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

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

      $git-filter分支--索引筛选器'git-rm-cached--ignore unmatch Rakefile'\ --prune empty--标记名筛选器cat----all

    2. 强制推至遥控器。

      $git推送原点master—强制

    3. 每个人都从遥控器中拔出(并使用 --force 如果需要)

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

        2
  •  2
  •   Sean Vieira    12 年前

    这是一个三步走的过程:

    1. 从存储库的副本中删除文件(使用 git rm 或通过 totally purging these files from your history 取决于这些文件从一开始就不在存储库中的重要性)
    2. 使用将更改推回到远程存储库 git push --force
    3. 让每个人都知道他们可以重新提取存储库——这需要 git rebase 他们最后一次知道的工作 好的 犯罪

    作为最后一步,您可能还想添加 .gitignore 文件复制到存储库,以便在克隆存储库时忽略所有正确的文件。