代码之家  ›  专栏  ›  技术社区  ›  Bonswouar

Git/Github:提交丢失

  •  5
  • Bonswouar  · 技术社区  · 10 年前

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

    • 有人发送了一份PR,我确实合并了它,但我使用Github恢复了它 revert 按钮
    • 他用同样的委员会做了另一次公关(加上一次纠正错误)
    • 我合并了它(使用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不同步(当我接受他的PR后,他没有git pull/merge,然后将其还原)。我怎样才能防止这种情况? (顺便说一句,为了“修复”它,我不得不选择所有缺失的提交。)

    1 回复  |  直到 10 年前
        1
  •  1
  •   Community prosti    7 年前

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

    参见: https://stackoverflow.com/a/1078209/1049112

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