Git School · FluxGit

Git amend: letzten Commit gezielt ändern

FluxGit ·

Die Blöcke sind verschiedene Fälle, kein Gesamtskript. Wähle den passenden Fall. Branchnamen, Pfade und VERIFIED_COMMIT vor Nutzung ersetzen. Abbruchbefehle gelten nur für ihre laufende Operation; nicht beide Alternativen ausführen.

Kurzantwort

Commit --amend ersetzt die aktuelle Spitze durch einen neuen Commit; das Originalobjekt bleibt unverändert. Es korrigiert Nachricht oder Inhalt eines lokalen letzten Commits nach Indexprüfung. Für bereits geteilten Verlauf ist ein zusätzlicher Korrekturcommit meist einfacher abzustimmen als eine Umschreibung.

Beispiel und Voraussetzungen

Das Beispiel ist ein gewöhnlicher lokaler Commit mit falscher Nachricht und fehlender Änderung in src/parser.js. Nachricht allein und Inhalt sind getrennte Reparaturen. Kein Beispiel für frühere, erste oder Mergecommits. Pfad und Nachricht anpassen und von der aktuellen Spitze ausgehen.

Vor Änderungen prüfen

Status, letzten Commit und diff --cached lesen. Der Index liefert den Inhalt eines normalen Amend; gestagte Dateien anderer Aufgaben können unerwartet hineingeraten. Auch ungestagte Änderungen prüfen. Vor Identitätswechsel klären, ob das Original gepusht, integriert oder von anderen verwendet wurde.

git status --short
git log -1 --oneline
git diff --cached
git diff

Referenz oder getrennten Checkout behalten

Rescue/before-amend an HEAD hält das Original für Vergleiche erreichbar, sichert aber nicht alle lokalen Dateien. Wichtige Dateien separat bewahren. Reflog kann noch vorhandene alte Referenzzustände zeigen, garantiert aber weder dauerhafte Objekte noch Backups nie committeter Änderungen.

git branch rescue/before-amend HEAD

Erster Ablauf

Für nur die Nachricht schließt --amend --only ohne Pfade bereits gestagte Änderungen aus. -m liefert die Korrektur. Anschließend Commit und Index prüfen: Gestagte Arbeit soll für einen eigenen Commit verfügbar bleiben. Auch Indexinhalt aufnehmen ist der andere Ablauf, obwohl beide --amend verwenden.

git commit --amend --only -m "Fix parser error message"
git diff --cached

Anderes Ergebnis bewusst wählen

Für die fehlende Datei passenden Pfad stagen, gesamten Indexdiff prüfen und mit --amend --no-edit die Nachricht behalten. Andere gestagte Dateien werden ebenfalls aufgenommen, sofern nicht bewusst ausgeschlossen. Projekttests ausführen. Bestimmte Hunks auszuwählen hilft beim Prüfen, beweist aber keinen korrekten Gesamtcommit.

git add -- src/parser.js
git diff --cached
git commit --amend --no-edit

Grenzen und Ausnahmen

Bei geteilter Spitze einen neuen Korrekturcommit bevorzugen. Veröffentlichung einer umgeschriebenen Spitze verlangt möglicherweise Abstimmung und kann auf geschützten Branches verboten sein. Kein generischer Force Push hier. Erlaubt das Team eine Umschreibung, dessen getrenntes Verfahren für Lease, Branch und Mitwirkende beachten.

git add -- src/parser.js
git diff --cached
git commit -m "Correct parser handling"

Konflikte und Aufräumen

Amend hat normalerweise keine eigene Konfliktfortsetzung. Hookfehler oder abgelehnter Commit verlangen Status-/Nachrichtenprüfung, keinen automatischen Hard Reset. Falschen Inhalt zunächst gegen rescue/before-amend vergleichen. Vor einem korrigierenden Reset geprüfte Kopien uncommitteter Dateien bewahren.

Ergebnis prüfen

Nachricht und Dateien beider Commits vergleichen. Verschiedene IDs sind normal. Bei Nachricht allein müssen die Bäume gleich sein; beim Inhalt nur der gewünschte Patch anders. Restlichen gestagten Zustand prüfen und Rettungsreferenz bis zur sicheren Aufnahme des geprüften Ersatzes behalten.

git show --stat HEAD
git diff rescue/before-amend HEAD
git status --short

Häufige Fragen

Verhindert no-edit Inhaltsänderungen? Nein, es erhält nur die Nachricht. Ändert Amend einen älteren Commit? Nicht direkt, dafür braucht es einen anderen Ablauf. Nach Push? Nur unter ausdrücklicher Teamregel für geteilten Verlauf; ein zusätzlicher Commit vermeidet viel Koordination.

Operation in FluxGit prüfen

Prüfe die Operation und die betreffenden Commits mit FluxGits visuellem Verlauf und Patchansicht. Behalte die Prüfungen für Branch, geteilten Verlauf und lokale Dateien aus diesem Beispiel bei. Die Downloadseite zeigt die aktuell verfügbaren Builds und Plattformen.

Offizielle Git-Referenzen

Verwandte Abläufe

FluxGit herunterladen