git - 如何更改 Git 中的分支点?

标签 git git-rebase git-cherry-pick

假设我的 git repo 中有以下结构:

          C'---D'---E'---F'    (dev)
        / 
A---B---C---D---E---F       (master)

我要 pull C'进入主分支并将分支点更改为C' ,即我想把上面的变成
              D'---E'---F'     (dev)
             / 
A---B---C---C'---D---E---F  (master)

我相信我应该结合使用cherry-picking和rebase,但我对如何准确地这样做感到困惑。我应该执行哪个操作序列?

建议 在对更清晰模式的评论之后(因为原始中的相同字母提交实际上是不必要的)
          G---H---I---J   (dev)
         / 
A---B---C---D---E---F     (master)

与相关的预期结果:
              H---I---J    (dev)
             / 
A---B---C---G---D---E---F  (master)

最佳答案

对于您的新图表,简短的回答是您重新设定基准 G和:

git checkout master
git rebase <commit_id_G>

更长的答案是你很难看到这个,因为你在想 master作为“主”分支,思考 dev作为“分支”。但是,当然,这些分支名称只是标签,您可以将它们中的任何一个视为“主”分支。

而且,由于 master是我们真正想要改变的分支,我们可以像这样重新绘制图表:
          H---I---J        (master)
         / 
A---B---C---D---E---F---G  (dev)

与相关的预期结果:
              H'--I'--J'    (master)
             / 
A---B---C---D---E---F---G   (dev)

希望在这里更容易看到,我们只需要 rebase master关闭这个新 D而不是 C .

关于git - 如何更改 Git 中的分支点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60224293/

相关文章:

xcode - 为现有项目创建 git 存储库?

python - 如何安装pybrain?

git - 如何修复 "Unable to unlink old *: No such file or directory"?

git - 有没有办法递归 merge 然后重新设置所有分支?

git - 列出与完全 merge 的分支的提交差异时如何忽略精心挑选的提交

git - 如何将 git repo 提交到 git repo(不是子模块)

git - 当我所做的只是压缩提交时,为什么 git-rebase 会给我 merge 冲突?

git - 使用 Git 挑选提交意味着什么?

git - Git 中有某种反向挑选吗?

git - 处于分离头状态时如何保存更改?