pyt*_*152 59 git atlassian-sourcetree
我想我对如何使用SourceTree GUI进行git rebase感到困惑.我有两个分支"master"和"dev".如图所示,两个分支发散了.我想在"dev"分支上使用命令行做一个rebase,这将是:
git checkout dev
git rebase master
Run Code Online (Sandbox Code Playgroud)
我本来希望右键单击"dev",然后选择"Rebase current changes changes to dev".我认为当前的变化意味着"对主人的新提交".但是选择这个选项似乎没有任何效果.什么是正确的步骤?
Von*_*onC 83
但是选择这个选项似乎没有任何效果.
是的,因为当前的变化是当前分支之一,即dev
.
衍合dev
上的顶部dev
是指无操作.
git checkout dev
git rebase master
Run Code Online (Sandbox Code Playgroud)
这意味着:当前分支是dev
:在最重要的基础上进行重新定位master
.
因此,在SourceTree中,您需要右键单击master
(在dev
签出时),然后选择:
Rebase current changes onto master
Run Code Online (Sandbox Code Playgroud)
目前的"
rebase current changes onto [branch]
" 命名具有误导性.看看这个改进讨论SRCTREE-1578
.在发现自己陷入困境,试图让一个功能分支与开发和失败相关时,我已经意识到标记为"
rebase current changes onto $somebranch
" 的左窗格上下文菜单项实际上与其名称暗示相反:
它重新定义当前分支$ somebranch的状态;
换句话说,它会反$somebranch
转到(或进入)当前分支,而不是反过来.(对?)
onto
当前案文中的介词" "具有误导性; 它意味着句子的对象($somebranch
在我的例子中)将接收更改.
事实上,情况正好相反.
缺少当前分支的名称会增加混乱.改进句子结构并包括受影响分支的名称的重新措辞将为清晰度提供巨大的胜利.
例如:Run Code Online (Sandbox Code Playgroud)rebase $currentbranch to head of $somebranch rebase $somebranch onto $currentbranch
请按照以下步骤操作:
快速说明:我假设您的主分支是 main,但有些人有 master。我将致电您的默认分支。当前分支是您当前的分支。
注意:当您将默认分支合并到当前分支时,单击合并按钮后,只需选择“ Merge Fetched ”选项并仅选择“ Rebase 而不是 merge(...) ”选项。