我认为LOCAL和REMOTE文件正是他们的名字所暗示的,但BASE和BACKUP是什么?
答案 0 :(得分:131)
Git执行三向合并,找到要合并的两个分支的共同祖先(也称为“合并基础”)。当您在冲突上调用git mergetool
时,它将生成适合馈送到典型3向合并工具的这些文件。因此:
foo.LOCAL
:冲突的“我们的”一面 - 即包含合并结果的分支(HEAD
)foo.REMOTE
:冲突的“他们”方面 - 你要合并的分支HEAD
foo.BASE
:共同的祖先。对于提供三向合并工具很有用foo.BACKUP
:调用合并工具之前的文件内容将保留在mergetool.keepBackup = true
的文件系统上。答案 1 :(得分:2)
如果将在线存储库中的更改拉(合并),则可以将REMOTE,LOCAL和BASE理解为:
REMOTE
=您的本地文件,包括自己的修改(“在文件系统上”)LOCAL
=联机存储库中的远程文件(“其他用户所做的更改”)BASE
=两个文件的来源(“未经任何修改”)这些术语来自在线存储库的观点,即“本地”。另请参阅有关three-way merge的维基百科文章。
答案 2 :(得分:1)
根据https://git-scm.com/docs/git-mergetool
<块引用>当使用此工具调用 git mergetool 时(通过 -t 或 --tool 选项或 merge.tool 配置变量),将调用配置的命令行,并将 $BASE 设置为包含该工具的临时文件的名称合并的共同基础,如果有的话; $LOCAL 设置为包含当前分支上文件内容的临时文件的名称; $REMOTE 设置为包含要合并的文件内容的临时文件的名称,$MERGED 设置为合并工具应将合并解析结果写入的文件的名称。
但是,rebase 命令和合并命令之间似乎存在差异。
Merge 将您的本地分支用作 LOCAL,将您要合并的分支用作 REMOTE
Rebase 将您的本地分支用作 REMOTE,并将您要重新设置的分支用作 LOCAL