我正在尝试添加类似于此问题中的自定义合并策略:Git合并冲突始终采用最新文件
我已将脚本保存为git-merge-latest.sh,并将以下行添加到.git/config:
[merge "latest"]
name = select latest file merge driver
driver = git-merge-latest.sh %O %A %B
Run Code Online (Sandbox Code Playgroud)
但是,当我跑步时git pull --strategy latest,我收到消息:
Could not find merge strategy 'latest'.
Available strategies are: octopus ours recursive resolve subtree.
Run Code Online (Sandbox Code Playgroud)
我试过检查git config merge.latest.driver,它返回预期的输出.我也改变的值driver来true只是为了验证它是不是找到脚本的问题.
这发生在运行git 1.8.2.2和1.7.9.5的两个不同系统上.我究竟做错了什么?
Edw*_*son 26
在这种情况下,您没有配置合并策略,您配置了合并驱动程序:
合并策略是一个程序,用于确定如何合并两个(或多个)提交.默认情况下,git merge使用程序中的"递归"策略git-merge-recursive.通过将--strategy <strategy>标志指定为git-merge(或git-pull),您可以告诉它调用不同的策略.如果要插入自己的合并策略,可以git-merge-mystrategy在路径中创建可执行文件并运行git merge --strategy mystrategy.
这与合并驱动程序不同.合并驱动程序是用于解决合并两个提交时存在的文件冲突的机制.您可以通过配置merge.mydriver.driver设置以您概述的方式插入自己的合并驱动程序.
要为特定文件启用合并驱动程序,需要在以下位置配置该文件的驱动程序.gitattributes:
filename merge=mydriver
Run Code Online (Sandbox Code Playgroud)