[英]How to protect a file in the git repository from commits after ther first commit?
我的Java app类路径下有一个tracking.properties
文件,它可以像“seq = 10”那样改变每个时刻到“seq = 17”。
该属性文件现在放入github存储库。 我希望该文件存在于存储库中,以便其他开发人员可以克隆它,并且文件不会被它们推送,因为“seq”可以从用户更改为用户。
我试过了
git rm --cached -f <file>
然后将tracking.properties
添加到.gitignore,但它会导致删除git存储库中的属性文件。 它应该保留在那里,只允许ONCE-FOR-ALL提交。 可能吗?
如果每个开发人员在克隆repo后运行此命令
git update-index --skip-worktree tracking.properties
然后git会在将文件视为本地未更改后永远处理,即使它已经更改。
如果您确实需要对其进行本地更改,则可以将其恢复为正常状态
git update-index --no-skip-worktree tracking.properties
另一种选择是
git update-index --assume-unchanged tracking.properties
以下是对skip-worktree和假设不变之间细微差别的一个很好的解释 。 我认为skip-worktree对你来说更好,因为它忽略了reset --hard
并在上游版本发生变化时保留了标志。
考虑使用“模板”模式。
检查文件作为tracking.properties.template
并添加tracking.properties
到你.gitignore
。 然后,在签出存储库之后,开发人员应该将模板文件复制到tracking.properties
,然后根据需要进行编辑。 此文件将被忽略,因此该文件不会显示为脏,开发人员不太可能对其进行更改。
这不会阻止模板文件的更改,但这可能是一件好事 - 您可能需要在将来对其进行更改。 重要的是可以在没有太多混淆的情况下对tracking.properties
进行仅限本地更改。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.