13

假设我正在对 master 进行分支的 rebase B 并且存在冲突。git 打开默认的合并工具,输入 3 个文件:file.LOCAL、file.BASE、file.REMOTE(它们的命名略有不同,但 LOCAL、BASE 和 REMOTE 在文件名中,它们是如何区分的)。

现在,根据 mergetool 手册页: $LOCAL 设置为包含当前分支上文件内容的临时文件的名称;$REMOTE 设置为包含要合并的文件内容的临时文件的名称,而 $BASE 设置为包含用于合并的公共基础的临时文件的名称。

这对我来说真的没有意义。LOCAL 是分支的当前状态。我迷路的地方是 BASE 和 REMOTE。所以我的问题是:

是否可以让 git 使用分支名称而不是 LOCAL 以及除 BASE 和 REMOTE 之外的类似更有意义的名称?例如,如果分支名称是 FeatureX 并且 BASE = 存在于 master 中的文件,有没有办法让 git 用 FeatureX 代替 LOCAL,用 master 代替 BASE,以便更清楚来源来自哪里? 在进行 rebase 时,这尤其是一个问题。

4

2 回答 2

9

是否可以让 git 使用分支名称而不是 LOCAL

我不这么认为,但是如果您在 mergetool 中声明一个图形合并工具,您可以使用您选择的标题调用该外部工具:

(合并工具调用脚本的摘录)

t1="'$4 (current branch)'"
t2="'(common ancestor)'"
t3="'(to be merged)'"

    "C:/Program Files/Araxis/Araxis Merge/Compare.exe" -max -wait -merge -3 -a2 -title1:${t1} -title2:${t2} -title3:${t3} "$alocal" "$base" "$remote" "$result" 

这样,您可以更轻松地看到什么是什么。

于 2010-03-24T06:48:10.530 回答
3

我不完全确定这个解释是正确的,但 BASE 将是文件的两个版本相同的地方。它可能就是你所说的 Git 树中的“父级”。

当它们分歧时,您最终会得到相互冲突的 LOCAL 和 REMOTE。

于 2012-02-20T21:15:20.553 回答