我同意@Shanakor,其中一个答案是错误的。所谓的local or remote基本上是指git在“ checkout /切换分支”方面所做的事情。如果你当前在分支A,并且运行git merge B,git会停留在分支A for merge命令中,所以local是A;如果你当前在分支A,运行git rebase B, (or rebase --onto B),在内部,git check out /切换到B,那么本地当然是B; 参见:https://git-scm.com/docs/git-rebase Quote:如果指定了,git rebase将在执行其他操作之前执行自动git切换。否则,它将保留在当前分支上。
4条答案
按热度按时间iqxoj9l91#
Git执行三向合并,找到要合并的两个分支的共同祖先(也称为“合并基”)。当您在冲突时调用
git mergetool
时,它将生成这些文件,这些文件适合于提供给典型的3路合并工具。因此:foo.LOCAL
:冲突的“我们”一方-即,您的分支(HEAD
)将包含合并的结果foo.REMOTE
:冲突的“他们的”一方-您要合并到HEAD
中的分支foo.BASE
:共同祖先。用于馈送到三向合并工具foo.BACKUP
:调用合并工具之前的文件内容,如果是mergetool.keepBackup = true
,则将保留在文件系统上。fslejnso2#
如果从在线存储库中**拉取(合并)**更改到本地副本中,您可以将REMOTE、LOCAL和BASE理解为:
*
REMOTE
=您的本地文件,包括自己的修改(“在文件系统上”)*
LOCAL
=在线存储库中的远程文件(“其他用户所做的更改”)*
BASE
=两个文件的来源('没有任何修改')这些术语是从在线存储库的**Angular **提出的,也就是“本地”所指的。另请参阅维基百科关于三方合并的文章。
kmbjn2e33#
根据https://git-scm.com/docs/git-mergetool
当使用这个工具调用git mergetool时(通过-t或--tool选项或merge.tool配置变量),配置的命令行将被调用,$BASE设置为包含合并公共库的临时文件的名称(如果可用);$LOCAL设置为包含当前分支上文件内容的临时文件的名称;$REMOTE设置为包含要合并的文件内容的临时文件的名称,$MERGED设置为合并工具应将合并解析结果写入其中的文件的名称。
但是,在rebase命令和merge命令之间似乎有区别。
合并使用您的本地分支作为LOCAL,而您正在合并的分支作为REMOTE
Rebase使用你的本地分支作为REMOTE,而你正在rebase到的分支作为LOCAL
nle07wnf4#
我同意@Shanakor,其中一个答案是错误的。所谓的
local or remote
基本上是指git在“ checkout /切换分支”方面所做的事情。如果你当前在分支A,并且运行git merge B
,git会停留在分支A formerge
命令中,所以local是A;如果你当前在分支A,运行git rebase B, (or rebase --onto B)
,在内部,git check out /切换到B,那么本地当然是B;参见:https://git-scm.com/docs/git-rebase
Quote:如果指定了,git rebase将在执行其他操作之前执行自动git切换。否则,它将保留在当前分支上。