有没有编写自定义git合并策略的文档?

有没有编写自定义git合并策略的文档?,git,merge,Git,Merge,有一些二进制文件类型,我已经编写了自己的代码来干净地合并。我尝试添加自己的合并策略,方法是在.gitconfig中添加带有驱动程序的merge命令行,并在.gittributes中添加指向合并程序的文件表达式 它是有效的——如果我用那个文件类型进行git合并,它会调用我的程序——如果我用1退出,它会失败并说有冲突——如果0成功 但是-我找不到任何关于它如何获取参数的文档-即我如何知道要合并的文件-要合并的文件等。它们不是作为环境变量输入的。。。我知道在驱动程序命令行中我可以输入一些变量,但是通过

有一些二进制文件类型,我已经编写了自己的代码来干净地合并。我尝试添加自己的合并策略,方法是在.gitconfig中添加带有驱动程序的merge命令行,并在.gittributes中添加指向合并程序的文件表达式

它是有效的——如果我用那个文件类型进行git合并,它会调用我的程序——如果我用1退出,它会失败并说有冲突——如果0成功

但是-我找不到任何关于它如何获取参数的文档-即我如何知道要合并的文件-要合并的文件等。它们不是作为环境变量输入的。。。我知道在驱动程序命令行中我可以输入一些变量,但是通过反复试验,$PWD是我发现唯一有效的变量


有人能给我指一下关于如何编写自定义合并策略的文档吗?

这个答案分为两部分,因为您描述的不是合并策略,而是合并驱动程序

合并策略 我认为没有任何适当的文件。只有源代码。不过,您可以通过使用
GIT_TRACE
从较高的层次了解这些策略是如何工作的,因为
GIT merge
计算一些信息,然后运行
GIT merge recursive
GIT merge octopus
或您选择的任何其他
-s
。如果编写自己的
git merge-oakey
命令,并运行
git merge-s oakey
,则可以查看参数

合并驱动程序 将按照中所述的方式调用合并驱动程序(搜索定义自定义合并驱动程序的)。
%
-字符替换将填充各种参数。正如它所说的,无论您在哪里编写
%O
%A
%B
,Git都会填写一个临时文件的名称,该文件保存来自相应索引阶段的数据(复制到工作树中的普通文件)。您需要覆盖名为
%A
的文件

如何知道正在合并的文件


您不知道(也不知道)正在合并哪个文件名;您只需使用三个输入内容即可完成工作。归根结底,不一定只有一个文件名:Git可能在合并的一侧检测到重命名,因此文件在合并基础和一侧命名为
foo
,在另一侧命名为
bar
。(如图所示,
%P
占位符将扩展到Git将用作其对最终路径名的最佳猜测的名称。不要将此作为合并过程的三个输入之一,尽管这三个输入位于
%O
%A
%B
文件中。)

gitattributes文档还提供了
%p
,它提供了存储合并结果的路径名。(可能在重命名过程中仍然没有帮助)@Hasturkun:oops,是的,我应该提到这一点。酷-谢谢-这正是我想要的-我找不到的是%O%A等。