2

Git是否有某种“忽略一次”功能?

我希望 git 这次只忽略对文件的更改,这可能吗?

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

Debug: 'true'

太“假”,

  • 我不希望文件在暂存文件时出现,所以我可以做一个“全部暂存”。
  • 我也不想将文件添加到 .gitignore,因为该文件包含其他更改的变量 & 应该被跟踪。
  • 我不想推送 Debug: 'false',因为那只会让其他人遇到相反的问题,即想要 Debug: 'true' 而无需跟踪。

这可能吗?

我知道:

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

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

我可以先使用 --assume-unchanged 然后进行更改然后使用 --no-assume-unchanged 绕过跟踪吗?

4

1 回答 1

3

不,你不能那样做——一旦你--no-assume-unchanged,Git 将检测到你的更改并尝试提交它,除非你有意识地避免它,从不使用commit --auto,并且add --patch每当你在你的配置文件中有你想要提交的更改时。换句话说,你只能自动忽略一个文件,你不能忽略文件中的特定变化。

可以执行以下顺序:

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类似名称)。这样,更改永远不会传播给您的协作者。当您更改配置文件的结构时,请确保也更改示例,以便其他人可以效仿。每个合作者都应该复制示例以创建真正的配置文件,然后他们可以针对他们的环境进行定制。

于 2018-09-11T12:18:08.113 回答