2016-09-27 6 views
1

Betrachten wir die Geschichte folgende begehen:vollständig entfernen eine frühere begehen

* 627f412 (HEAD -> master) final commit 
* 1425cf8 added some file 
* 2c8bb78 initial commit 

Das Repository wird weder gedrückt nicht während dieser Commits gezogen.

Das zweite Commit 1425cf8 ist ein unnötiges Commit. Und ich möchte dieses Commit vollständig entfernen.

So wird das neue Protokoll wie folgt aussehen:

* 627f412 (HEAD -> master) final commit 
* 2c8bb78 initial commit 

Wie kann ich das erreichen?

Ist git reset --hard HEAD~1 das Richtige in dieser Situation?

Antwort

2

Is git reset --hard HEAD~1 the correct thing to do in this situation?

Nein: git rebase -i 2c8bb78 ist.

Sie können den zusätzlichen Commit in der interaktiven Rebasesitzung löschen. (Wenn Sie vollständig was 1425cf8 eingeführt haben möchten)
Oder Sie können die beiden Commits quetschen.

Dazu in der interaktiven Sitzung (siehe "Git Tools - Rewriting History"):

  • ein s für Squash vor

Hinweis hinzufügen 627f412 das Ergebnis Ende wird nicht 627f412 sein: Das neue Commit wird einen anderen SHA1 haben, da sich sein Inhalt unterscheiden wird.

+0

VonC Hier ist was passiert, wenn ich 'Rebase -i 2c8bb78'. Ein Editorfenster wird geöffnet. mit folgenden: pick 1425cf8 einige Dateien hinzugefügt pick 627f412 final commit Ich löschte die erste Zeile. Gespeichert die Datei. Ergebnis: Fehler: konnte nicht angewendet werden 627f412 ... final commit Mache ich etwas falsch? Ich habe git Rebase --abort, um zum ursprünglichen Status zurückzukehren – deshmukh

+0

Siehe https://git-scm.com/book/de/v2/Git-Tools-Rewriting-History: Möchten Sie 1425cf8 Änderungen oder löschen Squash sie mit 627f412? – VonC

+0

VonC entweder. Es ist ein Commit, das nicht hätte sein sollen. Darüber hinaus ist das 627f412 Commit, was ich will und es enthält alles, was Teil von 1425cf8 war sowieso – deshmukh

0

Sie können Ihren HEAD auf 2c8bb78 (ohne --hard!) Zurücksetzen und dann die Änderungen übernehmen. Oder Rebase auf 2c8bb78 und Squash zu zwei anderen Commits (627f412 und 1425cf8).

Mit reset --hard können Sie Ihre Änderungen verlieren.

+0

user4780495 Ich bin auf einem wackeligen Boden. Siehe meinen Kommentar zu @ VonCs VonC-Antwort. Um die Dinge einfacher zu machen, könnten Sie bitte auf die Antwort näher eingehen? – deshmukh

Verwandte Themen