删除本地文件但保留仓库中的文件

3

尝试在本地删除文件,同时保留存储库中的文件。问题是我似乎无法丢弃已删除的内容。我尝试使用git rm。但是使用git rm也会删除存储库中的副本,这不是我想要的。我能想到的唯一解决方案是将路径放入.gitignore中。是否还有其他解决方案?

Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
  (commit or discard the untracked or modified content in submodules)

    deleted:    stuff/code

将路径放在.gitignore中并使用操作系统的常规工具进行删除有什么问题吗?在这种情况下,这似乎正是您应该做的事情。 - Two-Bit Alchemist
@Two-BitAlchemist 这样做是行不通的。如果文件已经存在于仓库中,将其添加到.gitignore中是无效的,不会产生任何作用。 - user229044
@meagar 抱歉,我理解能力有问题。 - Two-Bit Alchemist
1个回答

9

这并不是一个明智的做法,也不是Git旨在支持的工作流程。

如果你想删除本地文件但不影响Git,则不能使用Git。只需使用rm <file>即可。该缺失的文件将永远显示为未暂存的更改。

如果你想删除文件并防止Git不断将其显示为未暂存的更改,可以使用

git update-index --assume-unchanged <file>

但是,事实上你并不应该这样做。

不确定我是否做对了。我使用了 git update-index --assume-unchanged <file>,然后删除了我的文件。但是它仍然显示为在changes not staged for commit下已删除。 - moon
@Two-BitAlchemist 假设你使用的是一个相对较新的Git版本,它应该能正常工作:http://pastebin.com/dsKbNvcq - user229044
@meagar 懂了,谢谢清晰的解释。非常有帮助。顺便说一下,我发现以下命令对于删除多个文件非常有用:git ls-files --deleted -z | xargs -0 git update-index --assume-unchanged - moon
我用这个方法来修补已经提交的外部库,通过符号链接它而不会让 Git 抱怨找不到文件。现在我可以并行开发外部库了! - micahscopes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接