如何在本地保留(并忽略)它们的同时删除存储库中的文件?

时间:2010-07-01 18:48:37

标签: git

我错误地将一些本地项目文件添加到git存储库并提交/推送它们。

我想从远程存储库中删除这些文件,将它们保存在本地,并忽略它们以供将来提交/推送。

最好的方法是什么?

3 个答案:

答案 0 :(得分:4)

最干净的解决方案如下:

  • git rm --cached本地额外文件(请注意--cached选项以将这些文件保存在您的工作目录中),
  • 将其添加到您的.gitignore文件中,然后再添加git commit -A -m "..."
  • 推送您的分支(没有重写历史记录,但以前的历史记录将保留对这些文件的引用)。

如果您认为没有太多人撤离您的远程仓库(理想情况下,没有),您可以:

  • 在本地修复您的提交历史记录 (git rebase --interactive first-commit-with-files^:'^'引用第一个提交错误文件的父提交 git rm --cached文件,然后重播其他提交,除非其中一些也对相同的文件进行了修改 Other solutions here - git filter-branchgit rebase),
  • 推 - 强制你的分支,
    (但是,请准备好将人们指向RECOVERING FROM UPSTREAM REBASE手册页的git rebase部分。)
    (见definition of upstream here

答案 1 :(得分:1)

  1. 创建一个包含文件提交的新分支。
  2. 将原始分支重置回原来的分支。
  3. 执行push -f以强制还原远程向后(警告:这将“破坏”已经提取的提交的存储库 - 其可撤消但手动苦差事)。

答案 2 :(得分:1)

将它们添加到.gitignore(在repo的主目录中以行分隔的文件名,然后按照本指南:http://help.github.com/removing-sensitive-data/。最后git push -f强制覆盖远程仓库。