繁体   English   中英

如何在第一次提交后保护git存储库中的文件不被提交?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM