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 --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
或类似名称)。这样,更改永远不会传播给您的协作者。当您更改配置文件的结构时,请确保也更改示例,以便其他人可以效仿。每个合作者都应该复制示例以创建真正的配置文件,然后他们可以针对自己的环境进行自定义。
【讨论】:
以上是关于Git忽略文件更改但只有一次?的主要内容,如果未能解决你的问题,请参考以下文章