git rebase使用sourcetree

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)

Howe 在评论中补充道:

目前的" 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
Run Code Online (Sandbox Code Playgroud)

  • 对于上下文,downvote来自[deadman](http://stackoverflow.com/users/2586651/deadman)谁发布了[之前的答案](http://stackoverflow.com/a/39929671/6309)而没有解决SourceTree一点都不 我在评论中贬低并解释了我的批评.显然,死人并不欣赏我所作的建设性言论. (11认同)
  • Sourcetree应该将措辞更改为"将最新的更改从Master转换为Dev"以获得更好的说明. (10认同)
  • 严重的是,atlassian 找不到一种方法让它变得更加混乱:/ (4认同)
  • “将当前更改重新设置到[分支]”的当前命名具有误导性。查看此改进讨论:https://jira.atlassian.com/browse/SRCTREE-1578。 (3认同)
  • @Gerfried同意.只要dev没有被推动,你就可以在master之上进行重新设计. (2认同)
  • 谢谢你的解释。Sourcetree中的措辞让我完全困惑 (2认同)

can*_*ler 7

请按照以下步骤操作:

快速说明:我假设您的主分支是 main,但有些人有 master。我将致电您的默认分支。当前分支是您当前的分支。

  1. Sourcetree > 设置... > 高级 >选中允许强制推送”框,因为我们需要它。
  2. 检查您当前的分支。
  3. 现在,只需用鼠标进入您的默认分支并右键单击即可。
  4. 单击将当前更改重新设置为您的默认分支
  5. 现在,不要害怕。是的,您有拉动和推动号码。这很好,因为您可以看到本地和远程分支的差异。继续前进!
  6. 查看您当前的分支提交。他们应该有道理。
  7. 右键单击您当前的分支。
  8. 选择推送到原点/您当前的分支”。
  9. 取消选择除本地和远程分支之外的所有分支。
  10. 选中强制推送”框。
  11. 单击“确定”即可完成!

注意:当您将默认分支合并到当前分支时,单击合并按钮后,只需选择“ Merge Fetched ”选项并仅选择“ Rebase 而不是 merge(...) ”选项。