代码之家  ›  专栏  ›  技术社区  ›  filippo

在Git上手动合并

  •  7
  • filippo  · 技术社区  · 16 年前

    我使用一种专有的脚本语言开发了非常恢复的代码,其中大多数配置都包含在代码本身中。

    明显的问题是测试环境和生产环境之间的代码本身的差异,这正是我试图用Git管理的。

    由于我的测试环境非常不稳定,我想我可以在Git中为它创建一个分支,同时进行更改(并在其中保留测试配置的代码),并且在代码被接受之后,我会将它合并到生产环境中。

    好吧,当我要求Git合并我的分支时,它对代码做的非常好。但是配置也被迁移了,我不需要一个文件一个文件地打开,把它改回原来的样子。

    我是否可以从git中禁用自动合并并威胁所有内容,因为代码冲突将被手动与winmerge或稍后的内容合并?代码很短,真的。既然我要编辑它来应用配置…

    附言:请注意,我不是在问如何在Git上配置WinMerge。我有这些工具在用。我的问题是如何始终在分支之间执行手动合并。

    谢谢!

    f.

    2 回复  |  直到 13 年前
        1
  •  5
  •   VonC    13 年前
    < Buff行情>

    禁用自动合并

    < /块引用>

    这可以通过编写一个小的合并驱动程序来实现,设置在 a .gitattributes file
    类似于 unset的策略可能是您正在寻找的。

    unset
    < /代码> 
    
    < Buff行情>
    

    以当前分支的版本作为暂定合并结果,并声明合并存在冲突。 这适用于没有定义良好的合并语义的二进制文件。

    < /块引用>

    但是另一个有趣的gitattribute驱动程序是aclean filer:

    这将在将“已清理”内容提交到repo之前自动执行您选择的“清理”脚本。
    这样一个“clean”脚本可以帮助您自动对代码进行更改,以保留或修改嵌入在其中的配置值。

    一个小的合并驱动程序,设置在a .gitattributes file.
    类似政策unset可能是你想要的。

    Unset
    

    以当前分支的版本作为暂定合并结果,并声明合并存在冲突。 这适用于没有定义良好的合并语义的二进制文件。

    但另一个有趣的gitattribute驱动程序是clean filer:

    http://git-scm.com/figures/18333fig0703-tn.png

    这将在将“已清理”的内容提交到repo之前自动执行您选择的“清理”脚本。
    这样的clean'脚本可以帮助您自动化对代码所做的更改,以保留或修改其中嵌入的配置值。

        2
  •  2
  •   Mnebuerquo    16 年前

    您说“大多数配置都包含在代码本身中”,但希望所有配置都隔离在特定于配置的文件中。如果是这样,您可以将配置代码的测试和发布案例保存在同一个分支中。然后可以使用命令行开关来使用测试配置,而不是普通配置。

    如果程序可以从命令行(或环境变量、注册表项、文本文件等)中读取配置选择,那么就不必合并。当命令行开关不存在时,程序可以忽略测试配置文件,当命令行开关存在时,程序可以忽略发布配置。

    这样可以避免合并过程中可能出现的错误以及进行合并所需的时间。