我有一个提交,存储在一个分支中,因为这个提交只需要在特定的盒子中。
我已将其合并到主分支,但没有合并到本地使用的开发分支dev。
现在,由于错误,我把主分支合并到了dev分支,这就将这个提交引入了dev分支。
我知道可以 git revert sha 到dev分支;但由于这将引入一个撤销该提交的提交(我猜测,我还没有确切地尝试过),当我合并主分支时,这个提交也会被撤销吗?
如果是这样的话,我该如何仅从dev分支中撤销此提交。
而且,git reset HEAD^1
--hard 不可行,因为在不需要的提交之后,主分支上还有其他提交。
如果回退再应用是唯一的选择,那么我该如何只将除不需要的提交以外的额外提交从主分支合并到dev分支。
更新:
这是提交树。看起来很复杂。我指出了在dev分支中不需要的提交。(我已经删除了任何个人身份信息,感谢理解。使用截图gitk比ascii艺术要简单得多。)
提前感谢!
A-B-C
开始并删除B
以获得A-C'
,那么提交C'
与提交C
不同,因为它们没有相同的父级。所以当然,你可以构建一个由原始提交组成的第二个分支,其中缺少所需的提交,然后合并它,但你不会合并原始分支。 - Cascabelgit reset --hard HEAD^
将撤销错误的合并,然后就是解决如何在不拉取仅属于master的提交的情况下将所需更改传递到dev。由于这些基于master,可能需要使用cherry-pick。 - CB Bailey