2017-09-06 54 views
1

所以我想弄清楚一个奇怪的问题,提交进行,合并到我们的主分支,但随后在提交代码捆绑对此承诺似乎只是消失。提交散列是4516ce019github提交仍然在树上,以及我的本地git分支。从git的日志摘录在主分支:提交是在git树,但似乎并没有应用于代码

commit 02659934ce32a4e700e1a7116685933e40a58b7f 
Author: Jordan Earls <[email protected]> 
Date: Thu Jun 29 18:50:22 2017 -0400 

    Add RPC commands gethexaddress and fromhexaddress 

    These RPC commands can be used to convert to and from base58 addressses 
    to hex addresses as used in smart contracts 

commit 2c15f54789ab4f4e6d3b735aa6849111b5c9299d 
Merge: 14c08352c 4516ce019 
Author: qtum-neil <[email protected]> 
Date: Wed Jun 28 22:52:20 2017 +0000 

    Merge pull request #213 from qtumproject/earlz/add-block-author 

    Change block author to be 2nd vout/2nd tx for PoS 

如果你看一下git blame上作出承诺,事情似乎正确,则是存在的。但是,在主分支上的后续提交与完全不同的git blame好像提交不存在一样。 (称代码在5个月前修改,而不是2个月前)。

究竟发生了什么?我有一种感觉,这是一个合并冲突不好,但即使是最近的合并和/或混帐也会出现这种情况。我无法重现这一点,并且在此次提交之后我们从未强迫推送到这个分支(之前我们已经设置过)。

有没有人有任何指导如何这是可能的,以及如何精确地查明事情出错的地方?此问题在我们的代码库中引入了一个小的安全漏洞,因此了解为什么发生这种情况很重要;当然修复的方法是只是做一个樱桃选择拉回这个承诺回来。

编辑:使用git fsck --unreachable --no-reflog显示没有孤立的提交,所以我只有一个合并留下提交背后的预感似乎并非如此

+0

0265的父项是a633 – ninjalj

回答

1

它看起来像我2c15f54(您的原始公关)和ed22562(您提交链接为“以下提交在主”上)实际上不在同一分支上。这两个提交没有合并在一起,直到e4998dc,很明显,您的原始更改已被合并删除。不过,我不清楚为什么会发生这种情况。我使用git log --all --color --graph --pretty='format:%C(red)%h %C(yellow)%d%C(reset) %s %C(green)%an, %ad%C(reset)' --date=short以显示此图的方式查看图。

+1

值得一提的是,我认为GitHub试图以一种漂亮,简单,令人愉悦的方式渲染提交历史记录会导致漂亮的谎言。换句话说,你不能*使用* GitHub来弄清楚发生了什么;你需要真正的命令行Git,就像在这个答案中一样。 – torek