git rebase使用sourcetree


83

我想我对如何使用SourceTree GUI进行git rebase感到困惑。我有两个分支“ master”和“ dev”。如图所示,两个分支分歧。我想使用命令行在“ dev”分支上做一个基础,这将是:

git checkout dev
git rebase master

在此处输入图片说明

我本来希望右键单击“开发”,然后选择“将当前更改重新归入开发”。我认为当前的更改意味着“对主服务器的新提交”。但是选择此选项似乎没有任何效果。正确的步骤是什么?

Answers:


117

但是选择此选项似乎没有任何效果。

是的,因为当前更改是当前分支之一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

13
对于上下文,不满意者来自死者,后者较早地发布了答案,而根本没有解决SourceTree。我投了反对票,并在评论中解释了我的批评。显然,死人不喜欢我所作的建设性言论。
VonC

1
这会改变主分支吗?我只想使用master分支的最新更改来更新我的dev分支,然后将我的dev分支合并到master中。所描述的方式会完成这项任务吗?
Gerfried

2
@格弗里德同意。只要未推送开发人员,您就可以在master之上重新建立基础。
VonC

13
Sourcetree应该将措辞更改为“将最新的更改从Master还原为Dev”,以便更好地进行说明。
Timo

3
“将当前更改重新设置到[分支]”的当前命名具有误导性。查看此改进讨论:jira.atlassian.com/browse/SRCTREE-1578
赵子昊
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.