我错误地将一些本地项目文件添加到git存储库并提交/推送它们。如何删除存储库中的文件,同时保留(并忽略)它们在本地?
我想从远程存储库中删除这些文件,将它们保存在本地,并在将来的提交/推送时忽略它们。
这是什么最好的方法呢?
我错误地将一些本地项目文件添加到git存储库并提交/推送它们。如何删除存储库中的文件,同时保留(并忽略)它们在本地?
我想从远程存储库中删除这些文件,将它们保存在本地,并在将来的提交/推送时忽略它们。
这是什么最好的方法呢?
的干净的解决方案是以下内容:
git rm --cached
多余的文件(注意--cached
选项,留在你的工作目录中的那些文件),.gitignore
文件和git commit -A -m "..."
之后,如果你认为不会有太多人已经从您的远程回购(理想情况下,无)拉,你可以:
git rebase --interactive first-commit-with-files^
你的提交历史:“^”引用父母犯了第一个,你也介绍坏文件git rm --cached
文件,然后重播其他commmits,除非他们中的一些也作出了修改,以相同的文件git filter-branch
或(然后,请准备好指出git rebase
手册页的RECOVERING FROM UPSTREAM REBASE部分的人员)。请参阅git rebase
手册页上的RECOVERING FROM UPSTREAM REBASE部分。 push -f
来强制性地将远程回退(警告:这将“打破”那些已经提交了这些提交的存储库 - 它是可撤销的,但是是手动的苦差事)。那么它们添加到.gitignore
(线分开的文件名在回购的主目录,然后按照该指南:http://help.github.com/removing-sensitive-data/最后git push -f
强行覆盖远程回购
我们已经有一个关于忽略SO的问题,不是吗? O_O – 2010-07-01 18:53:39