Git / Github:提交迷路了

时间:2014-09-01 13:04:05

标签: git github git-merge revert pull-request

以下是发生的情况(我想这是我的问题出现了,但不是100%肯定):

  • 有人发了PR,我确实把它合并但后来我使用Github revert按钮将其还原了
  • 他用相同的提交做了另一个PR(加上一个用来纠正错误)
  • 我合并了它(使用Github merge按钮)
  • 在第一个公关上已经恢复的提交已经从主回购消失了!

为什么会这样?怎么可能现在,从做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
| |/ / /

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

再搜索一下,我发现我在a3c8d1a (第一次提交) 中添加的某些文件已在73768b7上正确合并 (倒数第二个) - 它们不仅仅是d522031,因为还原 - 但随后在25f28fb消失了 (最后一个)

编辑2: 我认为问题是因为fork没有同步(当我接受他的公关然后还原它时,他没有git pull / merge)。我怎么能阻止它? (顺便说一下“修复”它我必须在Cherry Pick中丢失所有提交的内容..)

1 个答案:

答案 0 :(得分:0)

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

请参阅:https://stackoverflow.com/a/1078209/1049112

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