当前位置: 首页 > 知识库问答 >
问题:

仅重新定位分支的一部分

季嘉良
2023-03-14

我有两个分支(和master)。分支2基于分支1基于master。我已经提交了分支1进行审查,它有一些更改,我将其中一些更改重新基于历史并将结果合并到master中。

现在我需要将Branch 2放在master之上,为审查/合并做准备。

问题是分支2仍然包含分支1的原始提交,这些提交已经不存在了,所以git会感到困惑。我尝试rebase -i删除分支1的原始提交,但是分支2的提交并不基于分支1之前的主提交。

我需要做的是采用分支2,删除一些提交,并在一次操作中只将剩余的提交放在master之上。但我只知道如何分两步做这两个操作。

我如何将我的分支的一部分重新放在另一个分支上,丢弃所有不在共同祖先中的提交,除了我指定的那些(例如从HEAD~2开始)?

以下是当前状态:

master                     new branch 1
- - - - - - - - - - - | - - - - - - - - -
    \
     \   branch 1
      \ _ _ _ _ _ _ _
                     \
                      \     branch 2
                       \ _ _ _ _ _ _ _

我最后想说的是:

master            new branch 1    
- - - - - - - | - - - - - - - - - -
                                   \
                                    \
                                     \
                                      \    branch 2
                                       - - - - - - - - - 

共有3个答案

严阳秋
2023-03-14
git rebase --onto master HEAD~2
  • master-您要重新定位的分支
  • 2-当前分支的最后n次提交需要重新设置基址

来源

宋臻
2023-03-14

这个解决方案比我想象的要简单得多。事实证明,您可以为更多种类的rebase命令提供< code>-i(我以为这只是为了将一个分支rebase到它自己,以改变历史)。所以我简单地运行了< code>git rebase -i master并删除了那些额外的提交。

东门茂实
2023-03-14

实际的命令应该是:

git rebase --onto newbranch1 branch1 branch2

这将在< code>new_branch1之上重放从< code>branch1到< code>branch2头的所有提交。

正如约书亚·戈德堡在评论中所说:

 git rebase --onto <place-to-put-it> <last-change-that-should-NOT-move> <change to move>

正如Denis Sivtsov在评论中所述:

如果只需要从分支重放最后一次提交,在这种情况下,请执行以下操作:

git rebase --onto newbranch1 HEAD~1
 类似资料:
  • 我想要“数字”

  • 本文向大家介绍dart 仅导入库的一部分,包括了dart 仅导入库的一部分的使用技巧和注意事项,需要的朋友参考一下 示例 如果只想使用一部分库,则可以有选择地导入该库。例如:            

  • 我正在尝试实现GitLab CI Pipeline来构建和部署Angular应用程序。在我们的项目中,我们有两个一般分支:(仅用于生产)和。对于开发,我们从分支创建分支。开发完成后,我们从创建合并请求到。当合并请求获得批准并合并到分支时,我想运行一个Pipeline以构建应用程序并在某些环境上部署构建。 我在中使用以下设置。gitlab ci。yml: 问题是,每次我进入任何分支时,管道都会执行。

  • 问题内容: 我正在iframe上工作,我需要在宽度大约为300px,高度为150px的iframe中显示页面的某些部分(例如右上角)。 例: 说我希望把一个 IFRAME 的 **www.mywebsite.com/portfolio.php 在页面上,但有IFRAME大小,只显示“ 投资组合运动 在”部分 右上角** 。 我该如何实现? 谢谢。 问题答案: 一个让你与工作完整的窗口。执行所需操作

  • 问题内容: 目标只是绘制一个位图,并在其顶部绘制擦除该位图基础区域的形状。 我创建了简单的概念证明代码,以尝试了解该如何做。在这里的各种线程中,我发现了许多有关使用的提示: 下面的代码仅创建一个带有蓝色背景的屏幕并添加一个自定义视图。此视图在其画布上绘制粉红色背景,位图图像 (带有细边框显示粉红色背景)以及代表每个PorterDuffXfermode的黄色重叠圆圈。 清除模式在左上方,显示为黑色。

  • 目标是绘制一个位图,并在某物的顶部,绘制消除位图底层区域的形状。 我有一个概念证明来尝试和理解我应该如何去做这件事。我发现了许多关于使用的提示: 下面的代码创建了一个蓝色背景的屏幕,并添加了一个自定义视图。该视图在画布上从下到上绘制:粉色背景,一个带有轻微插入以显示粉色背景的位图,以及每个PorterDuffXfermode的黄色圆圈。 这是测试的结果: CLEAR模式是左上角,显示为黑色。 在另