Git / Github:提交丢失

Bon*_*uar 5 git github revert git-merge pull-request

这是发生的情况(我想这就是我的问题的出现方式,但不是 100% 确定):

  • 有人发送了 PR,我确实合并了它,但后来我使用 Githubrevert按钮恢复了它
  • 他用相同的提交做了另一次 PR(加上一个来纠正错误)
  • 我合并了它(使用 Githubmerge按钮)
  • 在第一个 PR 处恢复的提交已从主存储库中消失!

为什么会发生这样的事?现在怎么可能,从进行 PR 的分叉中,它说There isn't anything to compare虽然这些提交不在远程存储库的原始分支上。

最后,我怎样才能恢复这些提交?

编辑:根据要求,这是我的有趣部分git log

* | |   25f28fb Merge branch 'FooUser-develop' into develop
|\ \ \
| * \ \   73768b7 Merge branch 'develop' of https://github.com/FooUser/mainRepo into FooUser-develop
| |\ \ \
| | * | | 2e61235 Invert adresses
* | | | |   d522031 Merge branch 'develop' of https://github.com/mainUser/mainRepo into develop
|\ \ \ \ \
| |/ / / /
|/| | | |
| * | | |   1e6e61b Merge pull request #946 from mainUser/revert-945-develop
| |\ \ \ \
| | * | | | 6767f03 (origin/revert-945-develop) Revert "Corrections"
| |/ / / /
| * | | |   5ccc9cd Merge pull request #945 from FooUser/develop
| |\ \ \ \
| | |/ / /
| | * | | 6e0c08b Corrections structuration
| | * | | f7ade9b Correction
| | * | | 4844437 Nb to Str
| | * | | 1729a83 Fix adress
| | * | | ceab88d Corrections: @ssert
| | * | | a3c8d1a #891 Fix
| |/ / /
Run Code Online (Sandbox Code Playgroud)

我显然丢失了大部分第一次提交(#891 Fix例如)。

搜索更多一点,我发现,例如,我在a3c8d1a (第一次提交)中添加的一些文件在73768b7 (倒数第二个)正确合并- 它们不仅仅是d522031因为恢复而在之前 - 但随后在25f28fb (最后一个)消失)

编辑2: 我认为问题是因为分叉不同步(当我接受他的 PR 然后恢复它时,他没有 git pull / merge)。我怎样才能防止这种情况发生呢? (顺便说一下,为了“修复”它,我必须挑选所有缺失的提交..)

oni*_*ake 1

如果您恢复合并提交,则需要先恢复恢复,然后才能再次合并分支。

请参阅:/sf/answers/75474661/

哪些参考http://www.kernel.org/pub/software/scm/git/docs/howto/revert-a-faulty-merge.txt