【问题标题】:How do I merge selected changes in a Git branch?如何合并 Git 分支中的选定更改?
【发布时间】:2012-05-19 00:04:10
【问题描述】:

我有两个分支用于开发和部署。我对要合并到开发分支的部署分支进行了一些更改。现在我希望合并命令在这种情况下显示冲突 -

//development
$path = 'localhost';

//deployment
$path = 'example.com';

相反,部署分支线只是替换了开发分支线。我可以挑选提交并将它们应用到开发分支或手动进行更改,但我认为必须有更好的方法来做到这一点。

【问题讨论】:

    标签: git merge conflict


    【解决方案1】:

    只有在开发分支中也有更改它才会发生冲突。因此,因为您只在 Deployment 中更改了它,所以它只是一个正常的版本更改。

    只是不要在您的变更集中提交该特定文件。 (假设您没有对该文件进行其他更改)

    【讨论】:

    • 是的,原来我没改。在这种特殊情况下,文件中还有其他细微更改,如果有办法避免手动编辑,那就太好了,因为配置文件可能会有很大变化。
    【解决方案2】:

    由于该配置文件变化很大,因此最好完全避免此类文件的任何合并问题。

    您应该在单独的文件中对该配置文件的值进行版本化:

    • config_dev.values
    • config_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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-05
      • 2010-10-01
      • 2014-06-08
      相关资源
      最近更新 更多