首页 > 解决方案 > Git忽略代码更改但继续跟踪的方式

问题描述

我知道存在这种方式来取消跟踪对文件的更改, git update-index --skip-worktree FILE但我需要完全忘记一个特定的提交/或对文件的更改,然后仍然允许跟踪新的更改。使用跳过工作树,我只是完全禁用跟踪更改,然后我可以启用它,最后我返回了我想要在 git 中未跟踪但包含在文件中的更改。我只需要保存对文件的更改(它的 Windows 路径问题),但不会将文件从 git 删除到 utracked。我不需要 gitignore 也不需要 git rm --cached.

每当我使用 sed 从 Unix 到 Windows 以及向后更改路径时,我都不会提交。我没有解决路径问题的跨平台解决方案,但维护了两个版本的程序。除了路径提交之外,我希望有相同的 git 更改,但需要在 Unix 上保存不同的路径。

标签: git

解决方案


Git 没有提供这样做的方法。来自此问题的 Git FAQ 条目

Git 没有提供这样做的方法。原因是如果 Git 需要覆盖这个文件,例如在结帐期间,它不知道对文件的更改是否宝贵并且应该保留,或者它们是否无关紧要并且可以安全地销毁。因此,它必须采取安全路线并始终保护它们。

尝试使用 的某些功能是很诱人的git update-index,即假设不变和跳过工作树位,但这些功能不能正常工作,因此不应该以这种方式使用。

如果您的目标是修改配置文件,将文件签入存储库通常会很有帮助,该文件是一个模板或一组默认值,然后可以在旁边复制并根据需要进行修改。这第二个修改过的文件通常会被忽略,以防止意外提交它。

因此,您绝对不应该将git update-index其用于此目的,而应该创建一个模板文件,您可以使用平台的适当路径进行更新,可能为此目的使用脚本。


推荐阅读