关于git track:Git忽略文件更改但只有一次?

Git ignore file change but only once?

Git有"忽略一次"功能吗?

我只想让Git这次忽略对文件的更改,可以吗?

我有一个带有变量的跟踪文件,我想更改:

1
Debug: 'true'

太"假",

  • 我不希望文件在暂存文件时出现,所以我可以执行"全部暂存"。
  • 我也不想将文件添加到.gitignore,因为该文件包含其他应跟踪更改的变量。
  • 我不想推动调试:"假",因为这只会让其他人在不进行跟踪的情况下有与想要进行调试相反的问题:"真"。

这有可能吗?

我知道:

1
git update-index --assume-unchanged <file>

但是如果我正确理解它,它将继续不跟踪更改,直到我使用--no-assume-unchanged标志开始跟踪。

我可以先使用——假设不变,然后进行更改,然后使用——不可以假设不变来绕过跟踪吗?


不,你不能这样做-一旦你的--no-assume-unchanged,git将检测到你的更改并尝试提交它,除非你有意识地避免它,永远不要使用commit --autoadd --patch,每当你想提交的配置文件中有更改时。换句话说,您只能自动忽略文件,不能忽略文件中的特定更改。

您可以执行以下顺序:

1
2
3
4
5
git update-index --no-assume-unchanged <file>
git add --patch <file>
# pick and choose what you want for yourself only
git commit
git update-index --assume-unchanged <file>

每次你改变什么,但是…如果有人忘了怎么办?

解决这个问题的典型方法是使用一个未提交的配置文件(添加到.gitignore中),并附带一个已提交的配置文件示例(通常命名为*.sample*.example*.skeleton或类似文件)。这样,更改就不会传播到您的合作者。当您对配置文件的结构进行更改时,一定要同时更改示例,以便其他人也可以这样做。每个合作者都应该复制示例以创建真正的配置文件,然后他们可以为自己的环境定制该文件。