Kürzlich bei der Arbeit verloren wir etwas Code in einem Projekt unter Versionskontrolle mit Git (und einem privaten Github-Repository).Wie kann ein Revert-Commit auch ein Merge-Commit sein?
benutzen ich git bisect
die Schuldigen zu finden begehen, und ich habe wirklich überrascht zu entdecken, es war wie ein revert suchen begehen, sondern hatte auch zwei Eltern wie merge verpflichtet:
commit b5f97311eea2905baf8a96fddec22321d952f05c
Merge: 8cc7371 131d463
Author: Bob <[email protected]>
Date: Fri May 22 19:42:25 2015 +0200
Revert "ISB-CPW-3627 - Mise en place du calage des filtres DS1/DS2/DS3/DS4"
This reverts commit 8cc7371e7133b68db95ac8e9aeb730d7889a1166.
Dieses Problem wird durch die Schaffung gelöst wurde ein neuer Zweig von einem Vorfahren-Commit und das Anwenden einiger Patches auf diesen neuen Zweig.
Also brauche ich keine Hilfe, um das zu beheben, ich möchte nur verstehen, wie ein Zurücksetzen Commit auch ein Merge Commit sein könnte, was passiert ist, und wie dieses seltsame Verhalten zu reproduzieren.
Ich habe versucht, es so zu reproduzieren:
- erstellen Sie eine neue Filiale am
8cc7371
- git zurückkehren
8cc7371
Es schafft eine revert begehen mit nur einem Elternteil (8cc7371
) als erwartet.
Der Täter-Commit-Autor verwendet Atlassian SourceTree anstelle der nativen Befehlszeilenschnittstelle, also habe ich auch versucht, das Revert-Feature in SourceTree zu verwenden und das gleiche Ergebnis wie oben (ein Elternteil) zu erhalten.
Nach einigen git Befehle auf b5f9731
läuft, bemerkte ich, dass git diff
und git show
nicht die gleiche Datei Set berichten:
$ git diff b5f9731..8cc7371 --name-only
=> 2 files :
application/sites/frontend/views/scripts/Layout/Foobar/PointsDeVente/index.tpl
public/media/design/frontend/css/main-dev.css
$ git show --oneline --name-only b5f9731
=> 1 file :
public/media/design/frontend/css/main-dev.css
SourceTree und Github zeigen zwei Dateien.
Hier finden Sie, wie das Diagramm aussieht: graph.html, und einige Git Befehle gibt es dort: misc.html.
Kann jemand erklären, was mit b5f9731
passiert ist?
Ich werde diesen Beitrag zu Favoriten hinzufügen und es als benutzerdefinierte How-To-Ask Referenz für Git-Fragen verwenden. –
Wie läuft die Untersuchung? –
Heute habe ich mit der interaktiven Wiederbenutzungsfunktion von SourceTree gespielt und konnte das Problem nicht reproduzieren. Ich nehme an, dieses Problem hat etwas mit "git rebase" oder "git pull --rebase" zu tun, aber ich gebe auf. Ich habe nicht genug Informationen, vor 3 Wochen, als es passierte, bat ich den Commit-Autor, mir seinen Reflog für weitere Untersuchungen zu schicken, und er war dazu nicht in der Lage. Er arbeitet an einem anderen Unternehmen (sie arbeiten am Frontend, während meine Firma serverseitig arbeitet), die Kommunikation ist schwierig. Das Geheimnis bleibt: s – Vince