【发布时间】:2011-12-21 11:08:23
【问题描述】:
鉴于以下情况:
- 我们针对不同的主题分支开发功能。
- 在发布之前,我们将所有主题分支合并到
master。然后在该分支上开始持续集成 - 此外,我们还直接在主分支上进行小改动(拼写错误等...)
- 如果一切正常,我们会将 master 分支中的所有更改合并到 relase 分支中。然后将发布此版本分支
只要我们的测试没有问题,这个工作流程就很好。但是一旦我们决定不从 master 发布一个特性,我们就会遇到麻烦。
例如:
- 我们有 5 个不同功能的主题分支
- 我们将它们全部合并到
master - 除此之外,我们还直接在 master 上进行了 2 个单独的提交(我们修复了一些拼写错误)
- 现在我们发现,5 个功能中的 1 个没有按预期工作,我们无法发货
- 我们仍然希望发布其他 4 个功能(+ 直接在 master 上进行的 2 个提交)
我们现在唯一的选择是: - 将 4 个主题分支直接合并到发布中 - 将 master 上的 2 个提交挑选到发布中
这可能相当烦人,尤其是当我们不跟踪直接在 master 上进行的提交并且数量增加时。
我想要一个我们能够做到的场景:
- 查看所有提交(或更好:合并的分支)
- 放弃我们不希望在下一版本中进行的所有更改
- 将所有其他更改合并到版本中
我已经做了一些研究并遇到了git rebase。 git rebase --interactive 非常接近我的预期。
最好的情况是:
- 以交互方式将所有更改从 master 更改为 release
- 删除我不需要的所有提交(或更好的分支)
- release 只包含我想要的更改
问题是:
当我这样做时:
git checkout master
git rebase --interactive release
<changes>
我最终修改了 master 分支而不是 release 分支。添加--onto release 选项也无济于事。
是否有可能将 rebase 的结果提交到另一个分支上?
问候 雷夫
【问题讨论】:
-
你能举一个更具体的例子吗?您的情况令人困惑。
-
我稍微改了一下措辞,加了一个例子,希望更容易理解
-
不应该反过来吗?
git chechout releasegit rebase -i master... -
我也试过了,结果没用
标签: git integration rebase git-rebase