【发布时间】:2012-05-19 00:04:10
【问题描述】:
我有两个分支用于开发和部署。我对要合并到开发分支的部署分支进行了一些更改。现在我希望合并命令在这种情况下显示冲突 -
//development
$path = 'localhost';
和
//deployment
$path = 'example.com';
相反,部署分支线只是替换了开发分支线。我可以挑选提交并将它们应用到开发分支或手动进行更改,但我认为必须有更好的方法来做到这一点。
【问题讨论】:
我有两个分支用于开发和部署。我对要合并到开发分支的部署分支进行了一些更改。现在我希望合并命令在这种情况下显示冲突 -
//development
$path = 'localhost';
和
//deployment
$path = 'example.com';
相反,部署分支线只是替换了开发分支线。我可以挑选提交并将它们应用到开发分支或手动进行更改,但我认为必须有更好的方法来做到这一点。
【问题讨论】:
只有在开发分支中也有更改它才会发生冲突。因此,因为您只在 Deployment 中更改了它,所以它只是一个正常的版本更改。
只是不要在您的变更集中提交该特定文件。 (假设您没有对该文件进行其他更改)
【讨论】:
由于该配置文件变化很大,因此最好完全避免此类文件的任何合并问题。
您应该在单独的文件中对该配置文件的值进行版本化:
config_dev.valuesconfig_depl.values 您将只有一个版本化的config.template 文件,其中值占位符:
// server name for dev or deployment or other environments
$path = '@@SERVER_NAME@@'
这样,这个模板文件不会改变,也不会被合并。
您还可以对能够在结帐时生成实际配置文件的脚本进行版本控制(不会进行版本控制,保持“私有”,即仅在您当前的工作目录本地)
如果您在.gitattributes 文件中将该脚本声明为content filter driver,它将在git checkout 上自动执行,并会查找它识别为您的config.template 的文件文件(脚本没有传递任何文件名或文件路径,它only gets the content of each checked-out files)
【讨论】: