2017-09-06 1 views
1

angewendet werden Also versuche ich herauszufinden, ein seltsames Problem, wo ein Commit gemacht wurde, in unserem Master-Zweig verschmolzen, aber dann im Folgenden den Code binden gebunden zu diesem Commit scheint nur zu verschwinden. Der Commit-Hash ist 4516ce019 und auf github das Commit ist immer noch auf dem Baum, sowie auf meinem lokalen Git-Zweig. Auszug aus git log auf dem Master-Zweig:Commit ist in git Baum, aber scheint nicht auf den Code

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 

Wenn man sich git blame schauen auf die sich verpflichten, die Dinge scheinen richtig ist, ist der Code gibt. Das Commit, das auf dem Master-Zweig folgt, hat jedoch eine völlig andere git blame, als ob das Commit nie existiert hätte. (sagen, dass der Code vor 5 Monaten geändert wurde, anstatt vor 2 Monaten).

Was genau ist hier passiert? Ich habe das Gefühl, dass es ein Merge-Konflikt ist, der schlecht geworden ist, aber selbst das würde sich in den jüngsten Zusammenschlüssen und/oder der Schuld des Gitarristen zeigen. Ich bin nicht in der Lage, dies zu reproduzieren, und wir haben niemals nach diesem Commit in diesen Zweig gedrängt (was wir vorher taten, als wir die Dinge aufbauten).

Hat jemand eine Anleitung, wie das möglich ist, und wie genau festzustellen ist, wo etwas schief gelaufen ist? Dieses Problem führte zu einer kleinen Sicherheitslücke in unserer Codebasis. Daher ist es wichtig zu verstehen, warum dies passiert ist. das Fixieren ist natürlich, nur trivially eine Kirsche-Auswahl zu machen, um dieses commit zurück in zu ziehen.

BEARBEITEN: Unter Verwendung git fsck --unreachable --no-reflog deckt keine verwaisten Zusagen auf, also scheint meine einzige Ahnung einer Verschmelzung, die das Festschreiben zurücklässt, nicht der Fall zu sein

+0

Eltern von 0265 ist a633 – ninjalj

Antwort

1

Es sieht für mich wie 2c15f54 (Ihre ursprüngliche PR) und ed22562 (das Commit, das Sie als "folgenden Commit auf Master" verknüpft) sind nicht tatsächlich auf dem gleichen Zweig. Diese beiden Commits wurden erst zusammengeführt, wenn sie e4998dc sind. Dort wird deutlich, dass Ihre ursprünglichen Änderungen durch die Zusammenführung entfernt wurden. Es ist mir nicht klar, warum das passiert ist.

Ich habe git log --all --color --graph --pretty='format:%C(red)%h %C(yellow)%d%C(reset) %s %C(green)%an, %ad%C(reset)' --date=short verwendet, um die Grafik in einer Weise zu sehen, die dies zeigt.

+1

Erwähnenswert, denke ich, ist, dass GitHubs Versuche, Commit-Geschichte auf eine schöne, einfache, ansprechende Weise zu machen, zu schönen Lügen führt. Mit anderen Worten, du kannst * GitHub * nicht benutzen, um herauszufinden, was passiert ist; Sie benötigen eine echte Befehlszeile wie in dieser Antwort. – torek

Verwandte Themen