合并以掌握具有先前共同历史的两个分支

merging to master two branches with previous common history

我问的是与此相关的问题:https://github.com/git/git/blob/master/Documentation/howto/revert-a-faulty-merge.txt

我有三个分支:master,A和B。我把B合并到A。后来发现是个错误,所以我把这个合并还原了。我知道现在不可能再进行一次 B 到 A 的合并(因为我可能会在还原之前丢失 B 的更改),我应该先还原这个合并的还原,然后再将 B 合并到 A。

master 来了...如果在第一次恢复合并后,有人将 B 合并到 master,然后将 A 合并到 master 怎么办?还是顺序相反?第一次还原之前来自 B 的更改会在 master 上吗?

谁能帮帮我?

BR

你有这段历史(时间从左到右流动):

-o--o--o--o           <- master
  \
   a--a--a---M--R     <- branch A
    \       /
     b--b--b          <- branch B

R是他们合并的反转M.

What if after first revert of merge, someone will merge B to master and then A to master? Or in reverse order? Will the changes from B before the first revert be on the master?

也就是说,你得到这个历史:

-o--o--o--o--X----Y    <- master
 |          /     |
 |   b--b--b      |    <- branch B
  \ /       \    /
   a--a--a---M--R      <- branch A

这里先是B合并到master,然后是A。如您所见,反转现在是 master 的一部分,它带来的变化也是如此,即它撤消了分支 B 的变化。您可以看到 XY 之前的所有提交,但不包括 Y 具有分支 B 的更改,但是 Y 和之后的这些更改被还原。

另一方面,如果首先合并分支 A,则分支 B(及其反转提交 R)已包含在合并中。 git merge B 会告诉你:"Already up to date".