如何在Git中的属性文件中提交和获取部分更改?

问题描述 投票:2回答:2

例如,在存储库中我有一个这样的属性文件:

database.url=https://localhost...
error.message=some message

所以像database.url这样的属性用于本地开发环境,永远不应该被提取或提交。但是像error.message这样的其他人是一般的应用程序配置,需要一直提取和提交。

因此,每次此文件更改时,我总是会收到此错误:

error: Your local changes to the following files would be overwritten by checkout:
    config/local.properties

为了解决这个问题,我只需将我的本地配置保存在临时文件中,然后执行git checkout -- config/local.properties,之后我现在可以拉,检查,合并,提交或任何我需要的,然后我现在可以再次写入我的本地配置。

它非常无聊,耗时且容易出错。有没有更好的方法呢?拆分文件不是一个选项。

git properties-file
2个回答
2
投票

如何最好地解决这个问题取决于您的构建工具,但一般原则是本地配置值不应该在您的仓库中 - 并且包括工作树,除非您可以使用.gitignore来支持它们(因为拆分文件)不是一种选择,你不能直接做)。

通常,这意味着您签出到源结构,其中属性文件只是一个模板,其中包含本地定义值的占位符

database.url=$DBURL
error.message=Some message

当然你不能直接运行它。您的构建工具将此模板与本地存储的属性文件(在工作树之外或.gitignored)组合以生成真实属性文件(它本身也在git工作树之外,或者.gitignored)。

同样,这有很多变化。如果你已经有一个相当大的构建过程产生了许多新文件(例如java项目,或者捆绑和/或缩小的前端项目等),那么它可能就像构建目标目录一样简单与已签入的工作树分开(例如,根据典型的Maven项目结构)。或者,如果您想要在适当的位置执行工作树,那么您签入的文件可能被命名为my.properties.template,构建过程可能会生成my.properties,因此您需要.gitignore my.properties


0
投票

到目前为止,我发现解决它的最好方法是在结账或合并之前使用git stash,之后使用git stash pop。也许有更好的方法来做到这一点,但我坚持不懈,直到找到更好的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.