我克隆了一个包含一些.csproj文件的项目。我不需要/喜欢我的本地csproj文件被Git跟踪(或在创建补丁时被提起),但很明显,项目中需要这些文件。
我已经将*.csproj添加到我的LOCAL.gitignore中,但文件已经在repo中。
当我键入gitstatus时,它显示了我对csproj的更改,我对跟踪或提交补丁程序不感兴趣。
如何从我的个人存储库中删除这些文件的“跟踪”(但将它们保存在源中,以便我可以使用它们),以便我在执行状态(或创建补丁)时不会看到更改?
是否有正确/规范的方法来处理这种情况?
正如其他答案所指出的,所选答案是错误的。
另一个问题的答案表明,可能需要跳过工作树。
git update-index --skip-worktree <file>
这个答案链接到一篇文章(http://fallengamer.livejournal.com/93321.html)并引用了这篇文章,很好地概括了--假设不变和--跳过工作树之间的区别,如下所示:
--假设未更改假设开发人员不应该更改文件。此标志用于提高不更改文件夹的性能如SDK。
--当您指示git不要触摸特定文件,因为开发人员应该更改它时,skip-worktree非常有用。例如,如果上游的主存储库承载一些生产就绪配置文件,您不想意外提交更改对于这些文件,跳过工作树正是您想要的。
所有这些都归功于borealid的研究和回答。此处包含此信息纯粹是为了方便他人。
只需调用git-rm-缓存在要从修订控制中删除的每个文件上就可以了。只要本地忽略模式正确,您就不会在git状态的输出中看到这些文件。
请注意,此解决方案从存储库中删除文件,因此所有开发人员都需要维护自己的本地(非版本控制)文件副本
要防止git检测到这些文件中的更改,还应使用以下命令:
git update-index --assume-unchanged [path]
你可能想做什么:(从下面@Ryan Taylor回答)
这是为了告诉git您想要自己的独立版本的文件或文件夹。例如,您不想覆盖(或删除)生产/登台配置文件。git更新索引--跳过工作树<路径名>
完整答案在以下URL中:http://source.kohlerville.com/2009/02/untrack-files-in-git/