git 忽略跟踪文件但保留在仓库中(假设未更改不起作用)

Gab*_*iel 1 git github

我试图忽略对我的存储库(Github)中一个非常小的文件的所有更改。它是一个隐藏文件 ( .first_run),其中包含单个字符 ( 0)。我(显然)用它来检测我的包的第一次运行。

我遇到这些问题:

  1. 该文件已被跟踪,因此将其添加到我的.gitignore中将不起作用。
  2. 我无法使用git rm --cached <file>,因为它会从存储库中删除该文件,这不是我想要的。
  3. 使用git update-index --assume-unchanged <file>也不起作用。如果在应用assume-unchanged到文件后,我更改了0较长的字符串(例如:)sdfgdgd,它不会显示为已更改(正确的行为)但是如果我更改了0a 4,它将显示为已修改

我认为第 3 点中描述的问题是由于此答案中的解释造成的:

Assume-unchanged (..) 并不是 Git 的承诺,即 Git 将始终认为这些路径未修改——如果 Git 可以确定标记为 Should-unchanged 的​​路径已更改,而不会产生额外的 lstat(2) 成本,那么它保留报告路径已被修改的权利(因此,“git commit -a”可以自由提交该更改)。

我可以做些什么来git忽略此文件的未来更改吗?

Jef*_*ett 5

您应该能够通过以下方式停止跟踪文件的更改:

git update-index --skip-worktree <file>
Run Code Online (Sandbox Code Playgroud)

您可以通过以下方式继续跟踪更改:

git update-index --no-skip-worktree <file>
Run Code Online (Sandbox Code Playgroud)