忽略已提交文件的更改在Git中

6
我在仓库中有一个配置文件,不应提交更改。但是,当我对该文件进行更改时,它们会被git status捕获。我尝试了各种方法来忽略对它的更改。
当我克隆仓库时,如何自动忽略它,以便我对该文件所做的任何更改都不会被git捕获?
我尝试过的解决方案:
1.将该文件添加到.gitignore中。似乎不起作用。这是因为该文件已经在索引中吗?
2.使用git update-index --assume-unchanged path/to/file。有些地方好像可以工作,但仅适用于我的克隆仓库。其他人需要应用相同的命令。
我尝试查看其他答案,但其他解决方案似乎不能正常工作。我觉得这应该很简单,因此任何指导都将是有益的!

2
可能是重复的问题:如何将Git中已提交的文件标记为只读? - jub0bs
能够在本地完成这个任务应该是一个独立的问题/答案。 - neverendingqs
1个回答

2

我在我的代码库中有一个配置文件,不应该提交更改。

那么……首先不要提交那个文件。
提交一个通用版本的文件,作为生成实际文件的模板(作为私有非版本化文件添加到您的.gitignore中)。

这个生成过程会在git checkout时自动进行。

首先,将您现有的文件重命名:

git mv afileToIgnore afile.tpl
git commit -m "record template value file"

然后将afileToIgnore添加到.gitignore文件中:这样git status就不会再显示它需要被添加/更改了。
现在,声明一个smudge内容过滤器驱动程序,它会自动重新生成那个文件(因为它被忽略了,所以在.gitignore中)。 < p >https://git-scm.com/book/en/v2/images/smudge.png

smudge脚本(可以进行版本控制):YourScript
copy aFileToIgnore.tpl aFileToIgnore

在版本控制的 .gitattributes 文件中声明内容过滤驱动程序:

echo 'aFileToIgnore.tpl config' >> .gitattributes

那个名为“config”的内容过滤驱动程序需要由每个克隆该存储库的用户在本地激活。

cd /path/to/repo
git config filter.config.smudge YourScript

最后一步是每个用户需要执行的唯一步骤,以便从实际配置文件中受益,该文件将在每次git checkout时自动生成。


克隆代码的其他人需要应用相同的命令。

没错,但如果他们不这样做,他们将完全没有配置文件。
这比在不应该修改文件时准备好待修改的文件更加明显。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接