我的Java app classpath下有一个tracking.properties
文件,它可以像“seq = 10”那样改变每个时刻到“seq = 17”。
现在将属性文件放入github存储库。我希望该文件存在于存储库中,以便其他开发人员可以克隆它,并且文件不会被它们推送,因为“seq”可以从用户更改为用户。
我试过
git rm --cached -f <file>
然后将tracking.properties
添加到.gitignore,但这会导致删除git存储库中的属性文件。它应该保留在那里,只允许ONCE-FOR-ALL提交。有可能吗?
答案 0 :(得分:4)
如果每个开发人员在克隆repo后运行此命令
git update-index --skip-worktree tracking.properties
然后git会在将文件视为本地未更改之后永远存在,即使它已经存在。
如果您确实需要对其进行本地更改,则可以将其恢复为正常状态
git update-index --no-skip-worktree tracking.properties
另一种选择是
git update-index --assume-unchanged tracking.properties
Here is a good explanation of the subtle differences between skip-worktree and assume-unchanged。我认为skip-worktree对你来说更好,因为它会忽略reset --hard
并在上游版本发生变化时保留标志。
答案 1 :(得分:3)
考虑使用“模板”模式。
将文件检入tracking.properties.template
,然后将tracking.properties
添加到.gitignore
。然后,在签出存储库之后,开发人员应该将模板文件复制到tracking.properties
,然后根据需要进行编辑。此文件将被忽略,因此该文件不会显示为脏,开发人员不太可能对其进行更改。
这不会阻止模板文件的更改,但这可能是一件好事 - 您可能需要在将来对其进行更改。重要的是,tracking.properties
的仅限本地更改可能没有太多混淆。