6

我的 Java 应用程序类路径下有一个tracking.properties文件,它可以随时将“seq=10”更改为“seq=17”。

属性文件现在被放入 github 存储库。我希望该文件存在于存储库中,以便其他开发人员可以克隆它并且该文件不会被他们推送,因为“seq”可以在用户之间更改。

我试过了

git rm --cached -f <file>

然后添加tracking.properties到 .gitignore,但它会导致删除 git 存储库中的属性文件。它应该保留在那里,并且只允许一次性提交。可能吗?

4

2 回答 2

9

如果每个开发人员在克隆 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 和 assume-unchanged 之间的细微差别。我认为 skip-worktree 更适合您,因为它会reset --hard在上游版本更改时忽略并保留标志。

于 2013-06-06T05:19:44.200 回答
4

考虑为此使用“模板”模式。

签入文件tracking.properties.template并添加tracking.properties到您的.gitignore. 然后,在签出存储库后,开发人员应将模板文件复制到tracking.properties,然后根据需要对其进行编辑。该文件将被忽略,因此该文件不会显示为脏文件,开发人员不太可能对其进行更改。

这不会阻止模板文件更改,但这可能是一件好事——您将来可能需要对其进行更改。重要的是,仅本地更改tracking.properties是可能的,而不会造成太多混乱。

于 2013-06-06T01:49:24.200 回答