如何停止跟踪并忽略 Git 中文件的更改?

问题描述

只需调用git rm --cached要从修订控制中删除的每个文件就可以了。只要您的本地忽略模式是正确的,您就不会在 git status 的输出中看到这些文件。

请注意,此解决方案会从存储库中删除文件,因此所有开发人员都需要维护自己的本地(非修订控制)文件副本

为了防止 git 检测到这些文件中的更改,您还应该使用以下命令:

git update-index --assume-unchanged [path]

**您可能想要做什么:

  1. 这是告诉 git 你想要你自己的独立版本的文件或文件夹。例如,您不想覆盖(或删除)生产/暂存配置文件。

git update-index --skip-worktree <path-name>

在 GIT 中取消跟踪文件

今天我学习了如何取消跟踪已经添加到 git 存储库的文件。以下命令将停止跟踪,但保持文件完好无损。这对于经常自动生成文件的目录很有用,因此每次执行 git 提交时,您都不必提交这些文件的新副本。

git rm --cached filename

rm 让我感到紧张,因为我不想意外删除我的文件(在我做之前做了备份)。好在一切都解决了,现在 git 不必进行任何不必要的跟踪。

== 更新 ==

您可以使用 .gitignore作为下一步。

==更新 ==

git update-index --assume-unchanged [path]

似乎比 rm -cached 在协作环境中更好的解决方案。我的用例一直在自己处理我自己的东西,所以我不能反对这一点。这对我来说是一个新命令,所以我在测试存储库中搞砸了一点,并注意到了一些差异:

  • 我仍然可以从存储库中签出文件,因为它只是被忽略了。
  • git update-index --no-assume-unchanged filename会将其带回混音中进行跟踪。
  • 我找不到通过 git 或 .git 文件夹查看哪些文件“假定未更改”的方法。

您的里程可能会有所不同,但我想我将来会开始使用 git update-index –assume-unchanged。感谢所有的评论和帮助。

解决方法

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

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

当我输入 git status 时,它会显示我csproj对跟踪或提交补丁不感兴趣的更改。

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

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...