git rm file.txt从repo中删除文件,但也从本地文件系统中删除它。要从repo中删除文件而不从本地文件系统中删除它,请使用:git rm --cached file.txt下面的确切情况是我使用git维护我公司网站的版本控制,但“mickey”目录是一个tmp文件夹,用于与CAD开发人员共享私人内容。当他需要巨大的文件时,我创建了一个私有的,未链接的目录和ftpd文件,供他通过浏览器获取。忘了我做了这个,后来我git add -A从网站的基目录中执行了一个。随后,git status显示需要提交的新文件。现在我需要从git的跟踪和版本控制中删除它们......下面的示例输出来自我刚刚发生的事情,我无意中删除了该.003文件。值得庆幸的是,我不关心本地副本发生了什么.003,但其他一些当前更改的文件是我刚刚对网站进行的更新,并且将在本地文件系统上删除史诗!“本地文件系统”=实时网站(不是很好的做法,但却是现实)。[~/www]$ git rm shop/mickey/mtt_flange_SCN.7z.003error: 'shop/mickey/mtt_flange_SCN.7z.003' has local modifications(use --cached to keep the file, or -f to force removal)[~/www]$ git rm -f shop/mickey/mtt_flange_SCN.7z.003rm 'shop/mickey/mtt_flange_SCN.7z.003'[~/www]$ [~/www]$ git status# On branch master# Changes to be committed:# (use "git reset HEAD <file>..." to unstage)## deleted: shop/mickey/mtt_flange_SCN.7z.003## Changed but not updated:# (use "git add <file>..." to update what will be committed)# (use "git checkout -- <file>..." to discard changes in working directory)## modified: shop/mickey/mtt_flange_SCN.7z.001# modified: shop/mickey/mtt_flange_SCN.7z.002[~/www]$ ls shop/mickey/mtt_flange_S*shop/mickey/mtt_flange_SCN.7z.001 shop/mickey/mtt_flange_SCN.7z.002[~/www]$ [~/www]$ [~/www]$ git rm --cached shop/mickey/mtt_flange_SCN.7z.002rm 'shop/mickey/mtt_flange_SCN.7z.002'[~/www]$ ls shop/mickey/mtt_flange_S*shop/mickey/mtt_flange_SCN.7z.001 shop/mickey/mtt_flange_SCN.7z.002[~/www]$ [~/www]$ [~/www]$ git status# On branch master# Changes to be committed:# (use "git reset HEAD <file>..." to unstage)## deleted: shop/mickey/mtt_flange_SCN.7z.002# deleted: shop/mickey/mtt_flange_SCN.7z.003## Changed but not updated:# modified: shop/mickey/mtt_flange_SCN.7z.001[~/www]$更新:这个答案正在获得一些流量,所以我想我会提到我的其他Git答案分享了几个很棒的资源:这个页面有一个图形,帮助我揭开Git神秘面纱。在“临Git的”一书是在网上,并帮助了我很多。