comments):
git checkout A
git rebase B # rebase A on top of B
local是B(重新基础)到上面)
remote是A
还有:
git checkout A
git merge B # merge B into A
A REBASE开关ours(REBASE启动前的当前分支)和theirs(您要在其上重新平衡的分支)。
kutschkem指出,在GUI合并工具上下文中:
- 局部引用部分重新平衡的提交:
我们的“(上游分支机构)
- 远程是指传入的更改:
他们的“—钢筋前的当前分支。
请参阅本答案最后一部分中的插图。
重新平衡时反转
混乱可能与inversion of ours and theirs during a rebase.
(相关摘录)
git rebase man page:
请注意,通过在<upstream>分支机构。
因此,当发生合并冲突时:
- 该方报告为'
我们的'是到目前为止重新调整的系列,从<上游& GT;,
- 和
他们的'是工作部门。
换言之,双方交换。
图示反转
关于合并
x--x--x--x--x(*) <- current branch B ('*'=HEAD)
\
\
\--y--y--y <- other branch to merge
,我们不更改当前分支“b”,因此我们现在的分支仍然是我们正在处理的分支(并且我们从另一个分支合并)
x--x--x--x--x---------o(*) MERGE, still on branch B
\ ^ /
\ ours /
\ /
--y--y--y--/
^
their
重新审视:
但是在重新基础上我们换边是因为rebase做的第一件事就是检查上游分支!(重放当前提交)
x--x--x--x--x(*) <- current branch B
\
\
\--y--y--y <- upstream branch
一git rebase upstream会先换吗HEADB到上游分支头(因此,与之前的“当前”工作分支相比,“我们的”和“他们的”的切换。)
x--x--x--x--x <- former "current" branch, new "theirs"
\
\
\--y--y--y(*) <- upstream branch with B reset on it,
new "ours", to replay x's on it
然后,REBASE将在新的“我们的”B分支上重播“他们的”提交:
x--x..x..x..x <- old "theirs" commits, now "ghosts", available through reflogs
\
\
\--y--y--y--x'--x'--x'(*) <- branch B with HEAD updated ("ours")
^
|
upstream branch
注:"upstream" notion是一组参考数据(全回购,或者像这里一样,是一个分支,可以是地方的分支)从中读取数据或向其中添加/创建新数据。
’地方的“和”遥远的“VS”mine“和”他们的’
Pandawood加入the comments:
对我来说,问题仍然存在,这是“本地的”和“远程的”(因为在Git中重新平衡时不使用“我们的”和“他们的”这两个术语,引用它们似乎会使答案更加混乱)。
图形用户界面Git合并工具
库茨克姆补充,正确地说:
解决冲突时,Git会说:
local: modified file and remote: modified file.
我很肯定这个问题是针对本地和远程的定义的。从我的经验来看:
- 局部引用部分重新平衡的提交:
我们的“(上游分支机构)
- 远程是指传入的更改:
他们的“—钢筋前的当前分支。
git mergetool确实提到了“本地”和“远程”:
Merging:
f.txt
Normal merge conflict for 'f.txt':
{local}: modified file
{remote}: modified file
Hit return to start merge resolution tool (kdiff3):
例如,KDiff3将display the merge resolution like so:

和meld将display it too:

同样VimDiff,which displays:
使用git mergetool-t gvimdiff将vimdiff作为合并工具调用。Git的最新版本使用以下窗口布局调用VimDiff:
+--------------------------------+
| LOCAL | BASE | REMOTE |
+--------------------------------+
| MERGED |
+--------------------------------+
LOCAL:
包含当前分支上文件内容的临时文件。
BASE:
包含合并公用基的临时文件。
REMOTE:
包含要合并的文件内容的临时文件。
MERGED:
包含冲突标记的文件。
Git已经执行了尽可能多的自动冲突解决,这个文件的状态是两者的组合局部的和远程的在Git自身无法解决的任何问题周围使用冲突标记。
这个mergetool应将分辨率的结果写入此文件。