Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何在不启动mergetool GUI的情况下获取基本/远程/本地文件?_Linux_Git_Command Line Interface_Mergetool - Fatal编程技术网

Linux 如何在不启动mergetool GUI的情况下获取基本/远程/本地文件?

Linux 如何在不启动mergetool GUI的情况下获取基本/远程/本地文件?,linux,git,command-line-interface,mergetool,Linux,Git,Command Line Interface,Mergetool,我甚至不知道该怎么问这个问题。。。但也许: 我处于冲突状态。我想使用null op或/bin/bash作为合并工具 也就是说,我希望git创建(远程、本地、基本等)文件,然后将我放回手动差异/合并提示。然后 我想告诉git我做完了 我想要的合并工具是什么,如何指定它 注意:这是一个,但1)它合并了重定基址(我没有重定基址),2)没有令人满意的答案,例如“选择任何合并工具并强制退出它。”:pgit mergetool是一个shell脚本(/bin/sh;/bin/bash可以运行它,如果您只有ba

我甚至不知道该怎么问这个问题。。。但也许:

我处于冲突状态。我想使用
null op
/bin/bash
作为合并工具

也就是说,我希望git创建(远程、本地、基本等)文件,然后将我放回手动差异/合并提示。然后 我想告诉git我做完了

我想要的合并工具是什么,如何指定它


注意:这是一个,但1)它合并了重定基址(我没有重定基址),2)没有令人满意的答案,例如“选择任何合并工具并强制退出它。”:p

git mergetool
是一个shell脚本(/bin/sh;/bin/bash可以运行它,如果您只有bash而不是普通的sh)。它:

  • 从索引中提取三个文件(
    .BASE
    =第1阶段条目,
    .LOCAL
    =第2阶段条目,
    .REMOTE
    =第3阶段条目)。第四个文件用作对合并工具的检查。如果要手动执行合并,则无需执行此操作
  • 使用第二个shell脚本运行选定的合并工具
  • 根据工具及其退出状态,询问合并是否成功,或使用退出状态确定合并是否成功。如果您说是这样,它会在合并的文件上运行
    git add
  • 删除它在步骤1中创建的文件
  • 它在一个循环中为所有未合并的文件执行此操作

    您的工作是修改该shell脚本,以便它提取三个文件并保留它们,即执行(大部分)步骤1,然后根本不执行其余步骤。只需在
    $(git--exec path)/git mergetool
    -中找到它所在的脚本,然后用另一个名称将它复制到其他地方,例如,
    git extract unmerged
    ,将其修改为您想要的行为方式,然后运行
    git extract unmerged
    ,您将拥有那些
    .BASE
    .LOCAL
    ,和所需的
    .REMOTE
    文件


    (或者您可以将
    merge.conflictStyle
    设置为
    diff3
    ,而不必为上面的所有内容操心,现在工作树文件已经包含了您需要的所有信息。这就是我所做的。)

    太棒了,我相信这就是我需要做的所有信息。关于
    merge.conflictStyle
    的好技巧。这才是我真正想要的。非常感谢。