我认为我对如何使用SourceTree GUI进行git rebase感到困惑。我有两个分支" master"和" dev"。如图所示,两个分支发散了。我想在" dev"分支,使用命令行,这将是:
git checkout dev
git rebase master
我原本希望右键单击" dev",然后选择" Rebase当前更改到dev"。我假设当前的更改意味着"对master"的新提交。但是选择这个选项似乎没有任何效果。什么是正确的步骤?
答案 0 :(得分:65)
但是选择这个选项似乎没有任何效果。
是的,因为当前的更改是当前分支之一,即[akshay@localhost tmp]$ gcc -fpreprocessed -E test.c | sed '/^\s*$/d'
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char *path;
int numbers[10];
int *a1;
a1= malloc(10*sizeof(int));
float *a2;
a2 = malloc(10*sizeof(float));
a1[2] = 10;
a2[4] = 3.14;
free(a1 );
free(a2);
return 0;
}
。
在dev
之上重新dev
意味着无操作。
dev
这意味着:当前分支为git checkout dev
git rebase master
:要在dev
之上重新定位。
因此,在SourceTree中,您需要右键单击master
(master
已签出),然后选择:
dev
当前命名&#34;
Rebase current changes onto master
&#34;是误导。看看这个improvement discussionSRCTREE-1578
。在发现自己陷入困境,试图让一个功能分支更新到开发和失败之后,我已经意识到标有“
rebase current changes onto [branch]
”的左窗格上下文菜单项实际上与顾名思义:
它将当前分支重新定义为$ somebranch的状态;
换句话说,它将rebase current changes onto $somebranch
重新加入(或进入)当前分支,而不是相反。 (右?)当前案文中的介词“
$somebranch
”具有误导性;它意味着句子的对象(在我的例子中onto
)将收到更改 事实上,情况正好相反 缺少当前分支的名称会增加混乱。改进句子结构并包括受影响分支的名称的重新措辞将为清晰度提供巨大的胜利。
例如:$somebranch