合并时,自动忽略某些更改

本文关键字:合并 | 更新日期: 2023-09-27 18:17:52

场景:
对于每个分支,我使用的是不同的开发数据库。原因是架构可能会有所不同,具体取决于在分支上完成的工作。
这很简单,我只需更改 app.config 中的连接字符串。
但是,这有一个问题,当我执行合并时,这些更改 - 在提交时 - 会合并回父分支,从而有效地覆盖该父分支的 app.config。
尽管如此,我还是希望在我的存储库中更改了 app.config,以便我可以简单地签出一个分支并拥有正确的 app.config。因此,git update-index --assume-unchanged不是解决方案。

合并时,自动忽略某些更改

这个问题的解决方案是 .gitignore .主机特定设置的环境不应与源共享存储库。标准方法是将app.properties添加到.gitignore并且从不提交;而是放置可以在特定环境中设置app.propertiesapp.properties.template,或者app.properties.default读取默认值的位置。

我有一个解决方案,但它不是自动的。部分可能是因为 git,但也因为忽略这样的完整文件不是正确的方法 - 如果您对 app.config 进行了一些其他更改并且确实想要合并怎么办?

让我先看看我是否正确理解了你的问题。您在分支上开发一些功能,完成后将其合并到其他"主"分支中。在进行此开发时,您会进行一些临时更改,这些更改在完成后不应包含在内。具体来说,您在 app.config 中提到了数据库连接字符串,但在一般情况下,它可能是额外的日志记录、跳过调用某些函数等。您希望将所有内容签入并存储在 git 中,以便没有未签入的修改文件。

假设我的理解是正确的,以下是我如何处理这个问题:虽然开发我只是添加一个给定的前缀和/或后缀(比如====(到那些不应该合并的提交的提交消息,然后在最后删除这些提交,然后再进行最终合并。

所以你最终会得到一个提交历史记录,看起来像

* blah blah blah
* ==== Remove extra extra logging again ====
* blah blah blah
* ==== Extra extra logging ====
* blah blah blah
* blah blah blah
* ==== Extra logging ====
* ==== Skip calling whatever_function ====
* blah blah blah
* ==== Change database connection string ====
* blah blah blah

删除这些临时更改是微不足道的(这可能是自动化的(。您确实必须稍微改变一下工作流程,但好处绝对值得。

您还可以在我之前描述的相同解决方案中看到此答案,并提供更多详细信息和屏幕截图。