我想我对如何使用SourceTree GUI进行git rebase感到困惑。我有两个分支“ master”和“ dev”。如图所示,两个分支分歧。我想使用命令行在“ dev”分支上做一个基础,这将是:
git checkout dev
git rebase master
我本来希望右键单击“开发”,然后选择“将当前更改重新归入开发”。我认为当前的更改意味着“对主服务器的新提交”。但是选择此选项似乎没有任何效果。正确的步骤是什么?
Answers:
但是选择此选项似乎没有任何效果。
是的,因为当前更改是当前分支之一dev
。
依靠dev
基础dev
意味着无人值守。
git checkout dev
git rebase master
这意味着:当前分支是dev
:要在之上重新建立基础master
。
因此,在SourceTree中,您需要右键单击master
(在dev
检出时),然后选择:
Rebase current changes onto master
当前“
rebase current changes onto [branch]
”的命名具有误导性。查看此改进讨论SRCTREE-1578
。在发现自己困惑于尝试使功能分支随着开发而更新并失败后感到困惑之后,我开始意识到标记为“
rebase current changes onto $somebranch
”的左窗格上下文菜单项实际上与其名称所暗示的相反:
它将当前分支作为基础进入$ somebranch州;
换句话说,它$somebranch
以当前分支为基础(或以该分支为基础),而不是反过来。(对?)
onto
当前文本中的介词“ ”具有误导性;这意味着该句子的对象($somebranch
在我的示例中)将接受更改。
实际上,将会发生相反的情况。
当前分支名称的缺失加剧了混乱。重新措词可以改善句子结构,并包括受影响分支的名称,这将为您赢得巨大的胜利。
例如:rebase $currentbranch to head of $somebranch rebase $somebranch onto $currentbranch