Git 忽略文件的某些部分

Git Ignore some part of the file

有没有办法避免在合并分支时忽略文件的某些部分,

即 config.ini(刚刚发明的),假设我无法制作 config.dev.ini、config.test.ini 并且在所有分支中我只有 config.ini 文件。

在config.ini中我们有'environment= dev/test/prod1..'其中之一。

每次从 dev 合并到 test/master 时都会在 config.ini 上发生冲突并显示环境更改为 dev 或 test 或.. 基于源分支。

有没有办法在冲突检测中忽略该部分,但仍考虑其他行。我的问题是针对 SCM 基金会的吗?我们可以完全忽略文件,为什么不能部分忽略?

我不想把它放进去。gitignore.I 只是举了这个 config.ini 的例子。但是,我试图避免其他开发人员覆盖某些文件中的某些部分。不完全忽略文件。当然对于 config.ini 可以产生一个程序化的解决方案,但我想知道一般情况下是否存在针对这种情况的解决方案。

不,没有办法轻松做到这一点。您可以使用自定义合并驱动程序并将其连接到 .gitattributes,但这意味着您必须编写自定义合并实现并要求每个用户在他们的系统上安装它,这很麻烦,但也不是将被您使用的任何托管平台使用。

Git 列表中有人问过这个问题,答案基本上是“不要那样做”。您所要求的类似于 the Git FAQ question on why you can't ignore changes to tracked files,但更一般地说,答案是您应该执行以下操作之一:

  • 根据环境使用不同的文件并使用脚本将其中一个文件复制到忽略的位置。
  • 使用脚本从每个系统上的模板生成配置文件。
  • 使用环境中的配置,无论如何这是最佳做法。