git - 在 Git 中 merge/ rebase 'disconnected' 分支

标签 git branching-and-merging

假设我们在Git中有如下情况:

      X---Y feature
     /
A---B---C---D edge

现在我重新设置 edge 分支的基线,稍微更改 B 提交(使用 edit),所以它现在看起来像这样:

      X---Y feature

A---E---C'---D' edge

C' 和 D' 与 C 和 D 是相同的提交,但应用在 E 之上(请注意 feature 分支中的 X 已断开连接)。

现在我怎样才能:

  1. Rebase/merge feature 分支,使其提交看起来就像是在 D' 之上应用的一样?
  2. Rebase/merge feature 分支,这样它的提交看起来就好像它们是在 E 之上应用的,但没有单独的“merge 分支...”提交(以及 C' 和 D ' 被重写为 C'' 和 D'')?

最佳答案

X 本身并没有断开连接,它仍然有原始的 B 作为它的父级。如果你想随后在 edge 之上 rebase feature,那么:

git checkout feature
git rebase edge

如果您希望更改树以使其具有与原始版本相似的结构,但将 X 作为 E 的子级,则:

git checkout feature
git rebase --onto <sha-of-E> <sha-of-B> feature

关于git - 在 Git 中 merge/ rebase 'disconnected' 分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5349928/

相关文章:

git - 删除 git repo 中所有以前版本的文件

git - 适用于 Windows 的 Openshift redhat : rhc command error

git - 获取默认远程推送和默认远程分支

Mercurial:多客户项目的存储库布局

git - QA 如何使用 Gitflow 工作流程中的功能分支一次测试多个功能?

git - 我可以将 .git 文件夹存储在我想要跟踪的文件之外吗?

git - 如何将部署的 git 修订写出到 Capistrano 中的文件

SVN合并重新整合缺失的范围但没有要合并的内容

tfs - TFS 2012分支-将Dev复制为主

git - 尽管有更改,但尝试 merge 分支会返回 'already up to date'