我克隆了一个包含一些.csproj文件的项目。我不需要/喜欢我的本地csproj文件被Git跟踪(或在创建补丁时被提起),但很明显,项目中需要这些文件。

我已经将*.csproj添加到我的LOCAL.gitignore中,但文件已经在repo中。

当我键入gitstatus时,它显示了我对csproj的更改,我对跟踪或提交补丁程序不感兴趣。

如何从我的个人存储库中删除这些文件的“跟踪”(但将它们保存在源中,以便我可以使用它们),以便我在执行状态(或创建补丁)时不会看到更改?

是否有正确/规范的方法来处理这种情况?


当前回答

我假设你试图从gittacking中删除一个文件。为此,我建议使用以下命令。

git更新索引--假设未更改

Ex-git更新索引——假设没有变化。gitignore.deide/compiler.xml

其他回答

只需调用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/

忘了你的gitignore?

如果您在本地拥有整个项目,但忘记添加git-ignore,现在正在跟踪一些不必要的文件,请使用此命令删除所有内容

git rm --cached -r .

确保您处于项目的根位置。

然后你可以像往常一样

Add

git add .

犯罪

git commit -m 'removed all and added with git ignore'

Push

git push origin master

结论

希望这能帮助那些不得不对自己的.git进行更改的人。

它会删除整个缓存看看你的.gitignore添加要跟踪的文件推送至您的回购

有3个选项;你可能想要#3

这将为您保留本地文件,但将在其他人拉动时删除该文件。git rm--缓存<文件名>或git rm-r--缓存<文件夹名>这是为了优化,就像一个包含大量文件的文件夹,例如可能永远不会更改的SDK。它告诉Git停止每次在本地检查巨大的文件夹是否有更改,因为它没有任何更改。如果文件/文件夹有上游更改(当您拉动时),则假设未更改的索引将被重置,文件将被覆盖。git更新索引——假设<路径名>不变这是为了告诉Git你想要自己的独立版本的文件或文件夹。例如,您不想覆盖(或删除)生产/登台配置文件。git更新索引--跳过工作树<路径名>重要的是要知道git更新索引不会随git传播,因此每个用户都必须独立运行它。

问题可能是由操作顺序引起的。如果您首先修改了.gitignore,然后修改了git-rm-cached-xxx,那么您可能不得不继续遇到这个问题。

正确的解决方案:

git rm--缓存的xxx修改了.gitignore

顺序不变!

修改后的.gitignore重载!

我假设你试图从gittacking中删除一个文件。为此,我建议使用以下命令。

git更新索引--假设未更改

Ex-git更新索引——假设没有变化。gitignore.deide/compiler.xml