【问题标题】:git: how to deal with to early branchinggit:如何处理早期分支
【发布时间】:2017-01-14 23:08:06
【问题描述】:

我做了类似的事情:

          y1-y2-y3-y4-y5
         /          /
x1-x2-x3           /
         \        /
          z1-z2-z3

但现在我想在 z2 和下一个中对 y1 和 y2 进行更改。

z3 已经合并到 y5 中。

我们想要实现的是这样的:

         y1-y2-y3-y4-...- throw away
         /   \       
x1-x2-x3       \    
         \       \ 
          z1-z2-z3-z4- continue work with changes from y1&y2

如何处理这个问题?

  1. 樱桃采摘
  2. 在 z3 上:git 合并 y2? (在 z3 上合并似乎有效。)
  3. 别的东西

一些附加信息:

repo 存在于 3 台服务器上。 (不可能有永久的网络过剩)每个克隆不时访问所有远程。如果使用rebase,我担心会有一些副作用。

【问题讨论】:

  • 我只想cherry-pick y1, y2
  • 如果这种情况很常见,您可能应该更改您的 git 工作流程以使用更适合您实际想要完成的工作
  • @JoePhillips:不,这是无法完全使用的错误修复分支的结果。但是第一部分的工作很有用,现在应该合并。
  • @Klaus 其余的提交会被使用吗?如果没有,只需在本地硬重置回您想要的提交,然后将分支合并到另一个分支。简单的。或者只是检查你想要的提交并合并它
  • @JoePhillips:这就是我的问题的第 2 点)。如果出现问题,我会在 z3 上创建一个新分支以保留 z3。我只是简单地与 y2 合并。似乎工作。如果检查了所有内容,我只需将该新分支合并回给定示例中的 z 分支(将是 z4 )。但这听起来与你的提议相反?!所以看起来不需要硬重置 y 并且可以保留。

标签: git git-branch git-merge


【解决方案1】:

rebase 命令实际上是为此的基础。

目前您的分支位于 x3,您希望将其基础移至 y2,所以

git checkout z 
git rebase y2

https://git-scm.com/book/en/v2/Git-Branching-Rebasing

更多示例

【讨论】:

  • 如果已经存在多个结帐,这是否安全?如果将 repo 克隆到多个服务器,则有些特殊。我有点害怕变基。过去通过“近乎完美的变基”做了很多工作:-)
  • @klaus 你没有提供足够的细节来真正知道这是否安全。你没有提到任何关于使用分叉的事情,也没有提到你是否想合并到整个分支中,或者只是在这里和那里的一两个提交
  • @JoePhillips:所有遥控器都有相同的内容并且实际上是同步的。我要合并/rebase/...的分支是线性提交行,但是并发分支有时会合并到现在应该合并的分支...啊是的:我会更新我的问题以获得更好的图片。
猜你喜欢
  • 1970-01-01
  • 2021-09-26
  • 1970-01-01
  • 2012-09-01
  • 2012-02-17
  • 2020-03-14
  • 1970-01-01
  • 2015-12-09
  • 2016-03-25
相关资源
最近更新 更多