从Git存储库中删除现有文件


Answers:


143

一次给出全部答案:

  1. 来自klemens:您需要将文件添加到文件中仓库中不需要的文件.gitignore上方。即

    $ cd $ cat >> .gitignore development.log CD

  2. 从米 narebski:然后,您需要执行“ git rm --cached <file>然后提交删除操作” ,从存储库中删除文件。

如果您还希望使回购看起来像从未跟踪过该文件,那将变得更加复杂且极不鼓励,因为它不仅会为历史记录中的每个提交创建全新的提交,而且还会破坏互操作性克隆了您的存储库的其他人之间,但同时也使这些提交中的每一个提交都未经测试(假设您在提交提交之前先对其进行测试)。

牢记这一警告,如果您要的是目标,那么您正在寻找的工具是filter-branch。第一个示例完全符合我的描述。


3
使用git rm --cached似乎不仅将其从分支中删除,而且当我拉到另一个系统时,它实际上删除了该系统上的文件。知道那里发生了什么吗?
biagidp

2
针对上述情况:我认为问题是在拉动更改之前,备用系统上没有.gitignore,因此删除操作删除了本地副本。至少那是理论
biagidp

53

要停止跟踪文件,只需使用git rm --cached <filename>

但是,正如其他人在此处指出的那样,将文件添加到.gitignore可能会阻止您稍后意外地再次添加它。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.