我假设本地和远程文件正如它们的名字所暗示的那样,但是 BASE 和 BACKUP 是用来做什么的呢?
Git 执行三方合并,找到正在合并的两个分支的共同祖先(又名“合并基地”)。当您对冲突调用 git mergetool时,它将生成适合提供给典型的3路合并工具的这些文件。因此:
git mergetool
foo.LOCAL
HEAD
foo.REMOTE
foo.BASE
foo.BACKUP
mergetool.keepBackup = true
如果 牵引(合并)从联机存储库变更为本地副本,则您可以将 REMOTE、 LOCAL 和 BASE 理解为:
REMOTE
LOCAL
BASE
这些术语来自 网上储存库的 观点,也就是“本地”所指的。另见维基百科关于 三人合并的文章。
根据 https://git-scm.com/docs/git-mergetool
当用这个工具调用 git mergetool 时(通过-t 或—— tool 选项或 merge.tool 配置变量) ,已配置的命令行将被调用,$BASE 设置为包含合并通用基的临时文件的名称(如果可用的话) ; $LOCAL 设置为包含当前分支上文件内容的临时文件的名称; $REMOTE 设置为包含要合并的文件内容的临时文件的名称; $MERGED 设置为合并工具应该写入合并解析结果的文件的名称。
但是,rebase 命令和 merge 命令之间似乎有区别。
Merge 使用本地分支作为 LOCAL,使用要合并的分支作为 REMOTE
Rebase 将本地分支用作 REMOTE,将要重新基于的分支用作 LOCAL