【发布时间】:2020-01-30 12:54:08
【问题描述】:
我的存储库中有一个配置文件config.env。我的代码通过 shell 脚本根据一些环境参数对这个文件进行了修改。
我希望不跟踪对此特定文件的更改并继续提交对代码的新更改,同时继续提取原始config.env,即使它可能在运行代码时发生更改。我怎样才能做到这一点?
我再次发布这个问题的原因是使用git update-index --assume-unchanged 的流行答案被文档明确拒绝。
【问题讨论】:
-
将其添加到
.gitignore文件 => 不会再次提交。或者在每次提交之前,您可以checkout your_file保留最新版本 => 这让我更危险 -
您必须使用
git update-index --assume-unchanged <file>指示 git 忽略对它的更改。每次克隆存储库时都需要执行此操作,即使您签出不同的分支也可能如此。我不使用此命令,因此您必须阅读它。与您一定会在这里遇到的其他 cmets 不同,将文件添加到.gitignore将不起作用,因为您可能已经尝试过。这只是为了避免git add将其添加到开头。 -
但是,您最好采用正常的模式来处理配置文件。提交一个模板,如
config-template.env或config.env.template,并将真正的配置文件添加到.gitignore,然后将其从存储库中删除。这允许您对模板进行更改并提交这些更改,同时将实际使用的文件保留在存储库之外。如果可以的话,如果磁盘上缺少使用的文件,您甚至可以添加构建或执行时的步骤来制作模板的副本。 -
请不要鼓励人们使用
git update-index --assume-unchanged。该信息是错误的,the Git documentation 现在明确警告它。
标签: git