Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git忽略文件的某些部分_Git_Git Merge - Fatal编程技术网

Git忽略文件的某些部分

Git忽略文件的某些部分,git,git-merge,Git,Git Merge,有没有办法避免在合并分支时忽略文件的某些部分 i、 e。 config.ini(刚刚发明),假设我不能生成config.dev.ini、config.test.ini,并且在所有分支中我只有config.ini文件 在config.ini中,我们有'environment=dev/test/prod1..其中一个 每次从dev合并到test/master时,config.ini上都会发生冲突,并将环境更改为dev或test或。。基于源分支 是否有一种方法可以忽略冲突检测中的这一部分,但仍要考虑其

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

i、 e。 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中。我只是举了这个config.ini的例子。然而,在一些文件中有一些部分我正试图避免其他开发人员覆盖它。不完全忽略文件。当然,对于config.ini,可以生成一个编程解决方案,但我想知道一般情况下是否存在这样的解决方案。

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

Git列表上已经有人问过这一点,答案基本上是“不要那样做”。您所要求的与类似,但更一般地说,答案是您应该执行以下操作之一:

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

管理部署/构建目标的方法有很多,但Git不是一种部署工具。跟踪如何在源代码中构建部署的说明,在部署时构建任意一个。@jthill我们使用Jenkins作为构建工具,在构建/部署时已经进行了这些更改。然而,错误地覆盖默认选项并从开发者PC手动构建仍然是一个风险。我只是在寻找一个可能的解决方法,如果有,正如问题中所述。为什么你会把单个开发人员对构建目标或任何其他部署/构建选项的选择放在一个跟踪文件中?不要跟踪本地选择,而是跟踪如何响应它们。将本地部署/生成选项放在本地的某个地方。@jthill请看,这不是单独的生成选项,而是默认的部署设置。更准确地说,在JavaMaven项目中,可以选择将快照推送到本地nexus存储库。(通常我们在Jenkins管道中覆盖)。如果设置包含
-SNAPSHOT
保留关键字工件,则该工件将转到snapshots repo,因此该工件必须仅存储在dev分支中的pom.xml中。如果错误地删除了它,开发人员从它的本地部署—考虑到他正在将工件推送到开发人员的repo—它就可以发布了!正如您所建议的,开发人员自己的选项,如
.pref
文件,我们已经忽略了。另一件事,我在解决冲突时解决了该部分。为什么每次合并都会重复。必须清楚,我不想在那个分支机构中扮演那个角色。