Git忽略文件更改但只有一次?

Posted

技术标签:

【中文标题】Git忽略文件更改但只有一次?【英文标题】:Git ignore file change but only once? 【发布时间】:2019-02-15 22:39:15 【问题描述】:

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

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

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

Debug: 'true'

太“假”了,

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

这可能吗?

我知道:

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

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

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

【问题讨论】:

你为什么不全部暂存,然后在提交之前unstage that single file? 因为我每天提交大约 10 次,并且不想一直取消暂存文件。 【参考方案1】:

不,你不能那样做 - 一旦你 --no-assume-unchanged,Git 会检测到你的更改并尝试提交它,除非你有意识地避免它,永远不要使用 commit --autoadd --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 或类似名称)。这样,更改永远不会传播给您的协作者。当您更改配置文件的结构时,请确保也更改示例,以便其他人可以效仿。每个合作者都应该复制示例以创建真正的配置文件,然后他们可以针对自己的环境进行自定义。

【讨论】:

以上是关于Git忽略文件更改但只有一次?的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 项目的 Git 忽略文件正在忽略 .swift 文件

如何让 Git 忽略文件模式 (chmod) 更改?

SVN忽略某个文件的更改,并不提交

git 仅添加修改过的更改并忽略未跟踪的文件

git 仅添加修改过的更改并忽略未跟踪的文件

如何让git忽略指定的文件