So ändern Sie den letzten Commit in Git (Nachricht, Dateien, Autor und Rückgängig)
Unabhängig davon, ob Sie einen Tippfehler in Ihrer Commit-Nachricht entdeckt haben, vergessen haben, eine Datei bereitzustellen, versehentlich ein Secret übergeben oder die falsche E-Mail-Adresse des Autors verwendet haben, git commit --amend ersetzt den Tipp-Commit sauber, ohne Ihren Zweig mit Commits zur Korrektur von Tippfehlern zu überladen.
Geschrieben von Kodmora
Das Softwarehaus hinter GitTree
- Commits
- Staging
- Commit-Verlauf
- Rückgängigmachen und Wiederherstellen
- Rebase
Auf dieser Seite
Führen Sie git commit --amend aus, um das letzte Commit für Ihren aktuellen Zweig zu korrigieren. Wenn nichts bereitgestellt wird, ersetzt Git den Commit durch Ihre aktualisierte Nachricht. Wenn Sie neue Änderungen zuerst bereitstellen, fügt Git diese bereitgestellten Änderungen in den Commit ein und ermöglicht Ihnen, die vorhandene Nachricht mit --no-edit beizubehalten oder sie an Ort und Stelle neu zu schreiben. Bevorzugen Sie einen visuellen Workflow? Aktivieren Sie in GitTree auf macOS, Windows und Linux Vorheriges Commit ändern im Commit-Panel (oder klicken Sie mit der rechten Maustaste auf das oberste Commit im Diagramm und wählen Sie Commit-Nachricht bearbeiten…), um die Nachricht vorab auszufüllen, einzelne Zeilen bereitzustellen oder die Bereitstellung aufzuheben, eine Remote-Branch-Warnung anzuzeigen, bevor der Push-Verlauf neu geschrieben wird, und jederzeit mit einem Klick Rückgängig wiederherzustellen.
Kurzreferenz: Jeder Befehl „git commit --amend“.
Wählen Sie den genauen Befehl aus, der mit dem Fehler in Ihrem letzten Commit übereinstimmt – oder springen Sie zum detaillierten Abschnitt unten, um Randfälle, Hooks, signierte Commits und visuelle Alternativen zu finden.
| Was Sie reparieren möchten | Befehl zum Ausführen | Was passiert mit dem Commit? |
|---|---|---|
| Einen Tippfehler in der letzten Commit-Nachricht beheben (inline) | git commit --amend -m "New message" | Ersetzt HEAD durch einen neuen Commit, der die neue Nachricht und alle derzeit bereitgestellten Änderungen enthält |
| Bearbeiten Sie eine mehrzeilige Commit-Nachricht in Ihrem Editor | git commit --amend | Öffnet Ihren konfigurierten Git-Editor mit vorab ausgefülltem vorhandenen Betreff und Text |
| Nur die Nachricht umformulieren (bereitgestellte Dateien ignorieren) | git commit --amend --only -m "New message" | Schreibt die Commit-Nachricht von HEAD neu, während Ihr aktueller Staging-Bereich für den nächsten Commit unberührt bleibt |
| Fügen Sie eine vergessene Datei hinzu und behalten Sie die gleiche Nachricht bei | git add <file> && git commit --amend --no-edit | Fügt <file> in den letzten Commit ein, ohne den Texteditor zu öffnen |
| Fügen Sie dem letzten Commit bestimmte Zeilen oder Abschnitte hinzu | git add -p && git commit --amend --no-edit | Ermöglicht die interaktive Staging ausgewählter Stücke und fasst dann nur diese Stücke in HEAD zusammen. |
| Falten Sie alle geänderten verfolgten Dateien in den letzten Commit | git commit -a --amend --no-edit | Stellt jede geänderte oder gelöschte verfolgte Datei bereit und ergänzt HEAD in einem Schritt (nicht verfolgte Dateien werden ignoriert) |
| Eine versehentlich übertragene Datei entfernen (auf der Festplatte behalten) | git restore --source=HEAD~1 --staged <file> && git commit --amend --no-edit | Setzt <file> im Index wieder auf HEAD~1 zurück, während Ihre lokale Arbeitsbaumdatei intakt bleibt |
| Korrigieren Sie den Namen und die E-Mail-Adresse des Autors beim letzten Commit | git commit --amend --reset-author --no-edit | Aktualisiert den Commit-Autor (und den Zeitstempel), sodass er mit Ihrer aktuellen user.name- und user.email-Konfiguration übereinstimmt |
| Aktualisieren Sie einen Zweig, nachdem Sie einen Push-Commit geändert haben | git push --force-with-lease --force-if-includes | Aktualisiert den Remote-Zweig nur dann sicher, wenn kein Teamkollege neue Commits gepusht hat und Ihr lokales Reflog den Remote-Tipp enthält |
Ein versehentliches git commit --amend rückgängig machen | git reset --soft HEAD@{1} | Verschiebt den Verzweigungszeiger zurück zum Commit vor der Änderung, während alle zusätzlichen Änderungen beibehalten werden |
Was git commit --amend eigentlich unter der Haube macht
Jeder Git-Commit-Hash ist eine kryptografische Prüfsumme (SHA-1 oder SHA-256), die aus fünf Datenelementen berechnet wird: dem Root-Baum-Snapshot, dem/den übergeordneten Commit-Hash(es), dem Autor-Namen/E-Mail-Adresse/Zeitstempel, dem Committer-Namen/E-Mail-Adresse/Zeitstempel und der Commit-Nachricht. Ändern Sie auch nur ein einziges Zeichen in der Nachricht – oder den Zeitstempel des Committers eine Sekunde später – und der resultierende Hash ist völlig anders.
# Before git commit --amend:
A --- B --- C <-- main (HEAD)
# After git commit --amend:
A --- B --- C' <-- main (HEAD)
\
C (still in git reflog as HEAD@{1} until garbage collection)Wenn Sie git commit --amend ausführen, nimmt Git alles, was sich derzeit im Staging-Bereich (dem Index) befindet, kombiniert es mit den übergeordneten Zeigern von C (B), schreibt ein neues Commit-Objekt C' und aktualisiert Ihren aktuellen Zweigverweis so, dass er auf C' zeigt. Der ursprüngliche Commit C wird nicht sofort gelöscht: Er bleibt mindestens 30 bis 90 Tage (gc.reflogExpireUnreachable) in Ihrem lokalen Reflog (HEAD@{1}) aufgezeichnet, weshalb eine versehentliche Änderung immer lokal wiederhergestellt werden kann – entweder über git reflog oder über die Tools Rückgängig und Wiederherstellen und Lost & Found von GitTree.
1. Ändern Sie die letzte Commit-Nachricht
Wenn Sie gerade etwas committet haben und sofort einen Tippfehler, eine falsche Jira/GitHub-Issue-Nummer oder ein fehlendes Conventional Commits-Präfix (feat:, fix:, chore:) bemerkt haben, überprüfen Sie zuerst git status, damit Sie wissen, ob irgendetwas gestagt ist.
Übergeben Sie mit -m eine neue einzeilige oder mehrabsatzige Nachricht
Um die Nachricht direkt vom Terminal aus zu ersetzen, ohne einen Editor zu starten, übergeben Sie -m. Sie können mehrere -m-Flags verketten, um eine Betreffzeile und Hauptabsätze zu erstellen:
# Replace the commit subject inline
git commit --amend -m "fix(auth): validate refresh token expiry before rotation"
# Replace both the subject line and body paragraph
git commit --amend \
-m "fix(auth): validate refresh token expiry before rotation" \
-m "Prevents expired tokens from issuing a new session when clock skew exceeds 30s."Bearbeiten Sie die vorhandene Nachricht in Ihrem Texteditor
Wenn Ihr Commit bereits eine detaillierte mehrzeilige Beschreibung, Trailer (Co-authored-by:, Signed-off-by:) oder Issue-Referenzen enthält, die Sie nicht erneut eingeben möchten, führen Sie git commit --amend ohne -m aus:
git commit --amendGit öffnet Ihr konfiguriertes core.editor (Vim, Nano, VS Code, Zed usw.) mit der aktuellen Commit-Nachricht vorinstalliert. Speichern und schließen Sie die Datei, um den geänderten Commit zu schreiben. Wenn Sie Ihre Meinung ändern, während der Editor geöffnet ist, löschen Sie die gesamte Commit-Nachricht (lassen Sie die Datei leer) und speichern Sie – Git bricht die Änderung mit Aborting commit due to empty commit message ab und lässt HEAD unberührt.
2. Fügen Sie vergessene Dateien oder bestimmte Zeilen zum letzten Commit hinzu
Der häufigste Grund, warum Entwickler nach --amend greifen, ist das Vergessen, eine Datei zu speichern, ein Testgerät bereitzustellen oder den Formatierer vor dem Committen auszuführen. Stellen Sie zuerst die fehlenden Änderungen bereit und ergänzen Sie sie dann mit --no-edit, sodass Git die vorhandene Commit-Nachricht beibehält, ohne einen Editor zu öffnen:
# Stage the forgotten file (or files)
git add src/auth/token-validator.test.ts
# Fold the staged file into the last commit and keep the existing message
git commit --amend --no-editStagen Sie nur bestimmte Zeilen oder Abschnitte, bevor Sie Änderungen vornehmen
Was wäre, wenn Ihr Arbeitsbaum sowohl den dreizeiligen Fix, der zum vorherigen Commit gehört, als auch 40 Zeilen Debug-Protokollierung oder Arbeit für Ihr nächstes Feature enthält? Führen Sie nicht git add . oder git commit -a --amend aus. Stellen Sie stattdessen nur die genauen Hunks oder Zeilen bereit, die zum vorherigen Commit gehören, indem Sie den Patch-Modus verwenden (ausführlich behandelt in unserer Anleitung zu git add -p und dem Staging bestimmter Zeilen):
# Choose y/n/s (split) for each changed hunk
git add -p src/auth/token-validator.ts
# Verify what is staged vs what stays in the working tree
git diff --staged
# Amend the last commit with only the staged hunks
git commit --amend --no-editIn GitTree müssen Sie sich nie mit der Terminal-Hunk-Aufteilung (s, e) herumschlagen, um dies zu tun: Klicken Sie auf eine beliebige Datei in Nicht bereitgestellte Änderungen, wählen Sie die genauen Zeilen aus oder klicken Sie auf Stage Hunk im Nebeneinander- oder Inline-Diff und schalten Sie Vorheriges Commit ändern um. Sehen Sie sich unseren Git-Diff-Leitfaden an, um zu erfahren, wie die Überprüfung von gestaffelten und nicht gestaffelten Unterschieden verhindert, dass versehentlicher Code in einen geänderten Commit gelangt.

3. Entfernen Sie eine versehentlich übertragene Datei (ohne sie von der Festplatte zu löschen).
Angenommen, Sie haben git add . ausgeführt und versehentlich eine .env.local-Datei, ein großes Build-Artefakt oder eine Datei, die zu einer separaten Pull-Anfrage gehört, committet. Wie Sie es aus HEAD entfernen, hängt davon ab, ob die Datei im Commit vor HEAD (HEAD~1) vorhanden war oder in HEAD neu hinzugefügt wurde.
Fall A: Eine neu hinzugefügte Datei aus dem letzten Commit entfernen (lokale Datei behalten)
Verwenden Sie git rm --cached, um die Datei aus dem Staging-Index zu entfernen, während die physische Datei auf Ihrer Festplatte verbleibt, und ändern Sie dann Folgendes:
# Remove the file from the index only (leaves the file on disk)
git rm --cached .env.local
# Optional: add it to .gitignore so it never gets staged again
echo ".env.local" >> .gitignore
git add .gitignore
# Rewrite the last commit without .env.local
git commit --amend --no-editFall B: Änderungen an einer nachverfolgten Datei beim letzten Commit rückgängig machen (lokale Änderungen beibehalten)
Wenn <file> bereits in HEAD~1 verfolgt wurde und Sie versehentlich Änderungen daran in HEAD eingefügt haben, verwenden Sie nicht git rm --cached (da dies zu einer Dateilöschung in HEAD führen würde!). Stellen Sie stattdessen den Indexeintrag für diese Datei aus HEAD~1 wieder her:
# Reset only the staged index state of <file> back to HEAD~1
git restore --source=HEAD~1 --staged src/config/database.ts
# Amend HEAD: the commit no longer touches database.ts, and your local edits stay in the working tree
git commit --amend --no-editWenn Sie stattdessen unerwünschte lokale Änderungen verwerfen oder nicht verfolgte Dateien vollständig bereinigen möchten, lesen Sie So verwerfen Sie Änderungen und bereinigen nicht verfolgte Dateien in Git und So stellen Sie eine gelöschte Datei in Git wieder her.
4. Ändern Sie den Autor, die E-Mail-Adresse oder den Zeitstempel des letzten Commits
Wenn Sie einen Commit auf einem neuen Laptop durchführen, bevor Sie user.email festlegen, oder einen Commit innerhalb eines Arbeitsrepositorys durchführen, während Ihre persönliche GitHub-E-Mail-Adresse global konfiguriert ist, zeichnet der Commit die falsche Identität auf. git commit --amend kann die Metadaten des Commits neu schreiben, ohne eine einzige Datei zu berühren.
# Option 1: Set an explicit author name and email on the last commit
git commit --amend --author="Jane Doe <jane@company.com>" --no-edit
# Option 2: Update git config first, then reset the commit author to match
git config user.name "Jane Doe"
git config user.email "jane@company.com"
git commit --amend --reset-author --no-edit
# Option 3: Amend the author date as well
git commit --amend --date="2026-11-11T14:30:00+02:00" --no-edit5. So ändern Sie einen bereits gepushten Commit sicher
Sobald Sie einen Commit ändern, der bereits an origin gepusht wurde, weichen Ihr lokaler Zweig und der Remote-Tracking-Zweig (origin/<branch>) voneinander ab: Ihr lokaler Zweig hat C', während origin immer noch C hat. Beide Commits teilen sich das übergeordnete Element B.
Wenn es sich bei dem Zweig um Ihren eigenen Feature- oder Pull-Request-Zweig handelt, aktualisieren Sie den Remote-Zweig sicher mit --force-with-lease (und --force-if-includes in Git 2.30+):
# Safely replace the remote branch tip with your amended commit
git push --force-with-lease --force-if-includes origin HEAD- Warum `--force-with-lease` anstelle von `--force`: Einfaches
git push --forceüberschreibt blind den Remote-Zweig und löscht alle Commits, die ein Teamkollege oder CI-Bot seit Ihrem letzten Abruf gepusht hat.--force-with-leaseprüft, oborigin/<branch>immer noch auf den genauen Commit-SHA verweist, der in Ihrer lokalen Remote-Tracking-Referenz gespeichert ist; Wenn in der Zwischenzeit jemand anderes gepusht hat, lehnt Git den Push ab, anstatt seine Arbeit zu verlieren. - Was `--force-if-includes` hinzufügt: Wenn Sie den automatischen Abruf im Hintergrund aktiviert haben, wird Ihre Remote-Tracking-Referenz möglicherweise vor dem Push aktualisiert.
--force-if-includesüberprüft, ob der Commit an der Spitze des Remote-Zweigs tatsächlich in Ihr lokales Reflog integriert wurde, bevor das Umschreiben zugelassen wurde. - Wenn Sie sich auf `main` oder einem gemeinsam genutzten Zweig befinden: Ändern Sie nicht einen gemeinsam genutzten Zweig und erzwingen Sie keinen Push-Push, auf dem andere Entwickler ihre Arbeit basieren. Lassen Sie stattdessen den Commit intakt und pushen Sie einen neuen Fix-Commit oder machen Sie ihn mit
git revertsauber rückgängig (siehe unsere Anleitung zum Zurücksetzen von Commits und Zusammenführungen und das Tutorial zum Wiederherstellen gepushter Fehler). - Müssen Sie zuerst Ihren Tracking-Zweig konfigurieren? Siehe So richten Sie einen Upstream-Zweig in Git ein.
6. Was passiert, wenn der Commit, den Sie ändern müssen, NICHT der letzte Commit ist?
git commit --amend schreibt immer nur HEAD neu (das Tipp-Commit). Wenn der Tippfehler oder die fehlende Änderung in HEAD~2 oder drei Commits zurückliegt, haben Sie zwei Möglichkeiten zur Bereinigung – ohne manuelles Stashen und Rosinenpicken:
Option 1: Schneller CLI-Autosquash mit git commit --fixup
Stellen Sie den Fix bereit, erstellen Sie einen --fixup-Commit, der auf den SHA des älteren Commits abzielt (oder --fixup=amend:<sha>, um auch dessen Nachricht zu bearbeiten), und führen Sie git rebase -i --autosquash aus:
# 1. Stage the changes meant for the older commit (e.g. a1b2c3d)
git add src/api/client.ts
# 2. Create a fixup commit targeting a1b2c3d
git commit --fixup=a1b2c3d
# 3. Autosquash the fixup commit straight into a1b2c3d
GIT_SEQUENCE_EDITOR=: git rebase -i --autosquash a1b2c3d~1Option 2: Visual Interactive Rebase in GitTree
Anstatt SHAs zu kopieren und Rebase-ToDo-Dateien im Terminal zu bearbeiten, lesen Sie unsere vollständige interaktive Rebase-GUI-Anleitung und Branch-Rebase-Anleitung. Klicken Sie im Interactive Rebase- und Reword, Squash and Drop-Planer von GitTree mit der rechten Maustaste auf einen beliebigen älteren Commit im Diagramm, wählen Sie Interactive Rebase from Here…, wechseln Sie diesen Commit zu Reword oder ziehen Sie einen Fix-Commit darauf zu Fixup/Squash und wenden Sie ihn mit einem Klick an.

7. So machen Sie einen versehentlichen Git-Commit --amend rückgängig
Haben Sie git commit --amend ausgeführt, während unbeabsichtigte Dateien bereitgestellt wurden, oder haben Sie versehentlich eine von Ihnen benötigte Commit-Nachricht überschrieben? Da Git jede Bewegung von HEAD im lokalen Reflog aufzeichnet, befindet sich Ihr Commit vor der Änderung immer noch sicher bei HEAD@{1}.
# 1. Inspect the reflog to see the amend and the commit before it
git reflog -n 5
# e9f8d7c (HEAD -> feature) HEAD@{0}: commit (amend): feat: add billing webhook
# 4a3b2c1 HEAD@{1}: commit: feat: add billing webhook
# 2. Restore the branch to the pre-amend commit and keep any extra changes staged
git reset --soft HEAD@{1}Durch die Verwendung von git reset --soft HEAD@{1} wird Ihr Verzweigungszeiger direkt auf den ursprünglichen Commit (4a3b2c1) zurückgesetzt und die Differenz zwischen dem geänderten Commit und dem ursprünglichen Commit in Ihrem Index belassen – nichts in Ihrem Arbeitsbaum geht verloren. Für einen tieferen Einblick in soft-, mixed- und hard-Resets und Reflog-Wiederherstellung lesen Sie Git Reset --soft vs --mixed vs --hard, wie man Git Reset, Rebase oder Commit mit Reflog rückgängig macht und wie man gelöschte Stashes und baumelnde Commits wiederherstellt.
Wann sollte git commit --amend vs. reset, revert oder rebase -i verwendet werden?
Verwenden Sie diese Entscheidungsmatrix, wann immer Sie den Verlauf korrigieren müssen, damit Sie den Befehl auswählen, der zur Position Ihres Commits passt und ob Teamkollegen ihn gepullt haben:
| Befehl | Ziel-Commit | Schreibt SHA um? | Am besten verwendet, wenn |
|---|---|---|---|
git commit --amend | Nur letzter Commit (HEAD). | Ja | Sie möchten die letzte Commit-Nachricht umformulieren, vergessene bereitgestellte Änderungen einbinden oder Autorenmetadaten in einem lokalen oder persönlichen Zweig korrigieren |
git reset --soft HEAD~1 | Letzter Commit (HEAD) | Ja | Sie möchten das Commit für HEAD vollständig aufheben und dabei alle Änderungen beibehalten, sodass Sie sie in zwei oder mehr separate Commits aufteilen können |
git rebase -i <base> | Jeder Commit im Bereich | Ja | Sie müssen einen Commit, der älter als HEAD ist, bearbeiten, umformulieren, komprimieren, korrigieren, neu anordnen oder löschen, bevor Sie Ihre PR zusammenführen |
git revert <sha> | Jeder Commit (HEAD oder älter) | Nein (fügt ein neues Commit hinzu) | Der Commit befindet sich bereits auf main oder einem gemeinsamen Zweig, in dem Force-Pushing blockiert ist oder Teamkollegen stören würde |
So ändern Sie den letzten Commit in GitTree (Schritt für Schritt)
Öffnen Sie „Changes“ und überprüfen Sie Ihr bereitgestelltes Diff
Öffnen Sie in GitTree auf macOS, Windows und Linux Änderungen in der Seitenleiste. Wenn Sie nur die Nachricht des letzten Commits bearbeiten möchten, lassen Sie Stadium Changes leer; Wenn Sie eine vergessene Datei oder bestimmte Zeilen einbinden möchten, stellen Sie nur diese Dateien, Teile oder Zeilen im Nebeneinander-Diff bereit.
Aktivieren Sie „Vorheriges Commit ändern“ (1).
Aktivieren Sie Amend Previous Commit über dem Commit-Meldungsfeld (oder drücken Sie
Cmd+Shift+Mauf macOS /Ctrl+Shift+Mauf Windows und Linux). GitTree füllt die Zusammenfassung und Beschreibung vonHEADvorab aus, wenn das Meldungsfeld leer ist – und wennHEADbereits auf Ihr Remote übertragen wurde, zeigt GitTree ein explizites Warnbanner an, bevor Sie den Verlauf neu schreiben.Verfeinern Sie die Nachricht (oder entwerfen Sie sie mit KI) und klicken Sie auf „Amend Commit“ (2).
Bearbeiten Sie den Betreff oder den Text – oder klicken Sie in GitTree Pro auf die Sparkle-Schaltfläche, um Nour und Ihre eigene Programmieragenten-CLI (Claude Code, Codex oder Gemini CLI) eine aktualisierte Commit-Nachricht aus dem vollständig geänderten Diff entwerfen zu lassen – und klicken Sie dann auf Commit ändern.
Mit einem Klick rückgängig machen oder mit Force Push (mit Lease) sicher pushen
Haben Sie Ihre Meinung geändert? Klicken Sie in der oberen Symbolleiste (
Cmd+Z/Ctrl+Z) auf Rückgängig, um den ursprünglichen Commit vor der Änderung aus dem Sicherheits-Snapshotrefs/ogt/trashvon GitTree wiederherzustellen, oder überprüfen Sie den alten Commit jederzeit in Lost & Found. Wenn der Commit bereits in Ihrem Remote-Feature-Zweig erfolgt ist, verwenden Sie Push erzwingen (mit Lease)… aus der Symbolleiste.


Wie GitTree jeden häufigen git commit --amend-Fehler beseitigt
Die meisten Unfälle mit Befehlszeilenänderungen passieren, weil das Terminal drei wichtige Kontextteile verbirgt, bis es zu spät ist: was sich bereits in Ihrem Staging-Bereich befindet, ob HEAD bereits auf origin übertragen wurde und was der vorherige Commit-SHA war, bevor Sie ihn überschrieben haben. GitTree löst jeden dieser Fehlermodi direkt in der Schnittstelle:
- Live-gestufte vs. nicht-gestufte Diff-Inspektion: Bevor Sie auf Amend Commit klicken, befindet sich die Liste der gestuften Änderungen direkt über dem Commit-Feld, sodass Sie nie versehentlich halbfertige Dateien in
HEADfalten können. Sie können einzelne Zeilen, Hunks oder Dateien mit einem Klick bereitstellen oder die Bereitstellung aufheben (Dateien, Hunks und Zeilen bereitstellen). - Pushed-Commit-Erkennung und Force-Push-With-Lease-Schutz: Wenn sich
HEADbereits im Remote-Zweig befindet, warnt GitTree Sie direkt im Commit-Panel, *bevor* Sie Änderungen vornehmen, und verknüpft den Workflow mit Push erzwingen (mit Lease)…, sodass Sie niemals den Push eines Teamkollegen überschreiben. - Rechtsklick-Umformulierung und schnelle `fixup!`/`amend!`-Erstellung: Möchten Sie
HEADumformulieren, ohne Ihre bereitgestellten Dateien zu berühren? Klicken Sie mit der rechten Maustaste auf den obersten Commit im Commit-Diagramm und wählen Sie Commit-Nachricht bearbeiten…. Müssen Sie ein älteres Commit reparieren? Klicken Sie mit der rechten Maustaste auf den älteren Commit im Diagramm, um einenfixup!- oderamend!-Commit zu erstellen, oder öffnen Sie Interactive Rebase. - Automatische Sicherheits-Snapshots (`refs/ogt/trash`) und Rückgängigmachen mit einem Klick: Vor der Ausführung einer der 19 verlaufsverändernden Vorgänge – einschließlich Ändern eines Commits, interaktivem Rebase, Zurücksetzen, Löschen von Zweigen und Verwerfen – zeichnet GitTree einen lokalen Snapshot unter
refs/ogt/trashauf. Wenn Sie auf Rückgängig (Cmd+Z/Ctrl+Z) klicken, wird Ihr exakter Commit- und Staging-Status vor der Änderung sofort wiederhergestellt. - Visual Lost & Found & integriertes Terminal: Selbst wenn Sie das integrierte Terminal oder vor Wochen geändert haben, ist Lost & Found nicht erreichbar und ersetzt Commits durch ihre vollständigen Diffs, sodass Sie sie wiederherstellen, auswählen oder verzweigen können, ohne die rohe
git reflog-Ausgabe zu analysieren. - Git-Hooks, geheime Warnungen und AI-Commit-Nachrichten: GitTree führt die
pre-commitundcommit-msgGit-Hooks Ihres Repositorys aus, überprüft bereitgestellte Diffs auf versehentliche API-Schlüssel und lässt (in GitTree Pro) Nour mithilfe Ihres eigenen lokalen Coding-Agenten genaue Commit-Nachrichten generieren.




Häufig gestellte Fragen
Ändert git commit --amend den Commit-SHA-Hash?
Ja. Git-Commits sind unveränderlich, daher erstellt git commit --amend ein brandneues Commit-Objekt mit einem neuen SHA-1- (oder SHA-256-)Hash, der dasselbe übergeordnete Element wie der Commit hat, den es ersetzt, und verschiebt dann Ihren Zweigzeiger auf den neuen Commit. Der ersetzte Commit bleibt in Ihrem lokalen git reflog (HEAD@{1}), bis die Git-Garbage Collection nicht erreichbare Objekte abläuft.
Wie ändere ich den letzten Commit, ohne seine Commit-Nachricht zu ändern?
Stellen Sie Ihre zusätzlichen Änderungen mit git add <file> (oder git add -p) bereit und führen Sie dann git commit --amend --no-edit aus. Das Flag --no-edit weist Git an, die vorhandene Commit-Nachricht von HEAD wiederzuverwenden, ohne Ihren Texteditor zu öffnen. Wenn Sie in GitTree Vorheriges Commit ändern aktivieren, werden automatisch die Zusammenfassung und die Beschreibung des vorherigen Commits ausgefüllt, sodass Sie sofort auf Commit ändern klicken können.
Wie ändere ich nur die letzte Commit-Nachricht, wenn ich bereits andere Dateien bereitgestellt habe?
Führen Sie git commit --amend --only -m "New commit message" (oder git commit --amend -o) aus. Das Flag --only weist Git an, HEAD nur unter Verwendung des bereits in HEAD aufgezeichneten Dateibaums zu ändern, sodass Ihre aktuell bereitgestellten Dateien im Index für Ihren nächsten Commit unberührt bleiben. In GitTree können Sie auch mit der rechten Maustaste auf den obersten Commit im Diagramm klicken und Commit-Nachricht bearbeiten… wählen.
Kann ich einen Commit ändern, nachdem ich ihn bereits an GitHub, GitLab oder Bitbucket übertragen habe?
Ja, wenn es sich um Ihren eigenen Feature-Branch handelt: Ändern Sie den Commit lokal und führen Sie dann git push --force-with-lease --force-if-includes aus (oder verwenden Sie Force Push (With Lease)… in GitTree), damit Git den Remote-Branch nur aktualisiert, wenn niemand sonst neue Commits gepusht hat. Führen Sie git pull nicht aus, nachdem Sie einen gepushten Commit geändert haben, und vermeiden Sie es, Commits in gemeinsam genutzten Zweigen wie main zu ändern – verwenden Sie dort stattdessen git revert.
Wie entferne ich eine Datei aus dem letzten Commit, ohne sie von meinem Computer zu löschen?
Wenn die Datei beim letzten Commit neu hinzugefügt wurde, führen Sie git rm --cached <file> gefolgt von git commit --amend --no-edit aus. Wenn die Datei bereits in HEAD~1 vorhanden war und Sie nur die in HEAD vorgenommenen Änderungen entfernen möchten, führen Sie git restore --source=HEAD~1 --staged <file> und dann git commit --amend --no-edit aus. Beide Befehle sorgen dafür, dass Ihre lokale Datei im Arbeitsbaum intakt bleibt.
Wie mache ich einen Git-Commit--amend rückgängig, wenn ich einen Fehler gemacht habe?
Führen Sie git reset --soft HEAD@{1} im Terminal aus. Dadurch wird Ihr Verzweigungszeiger zurück auf den genauen Commit HEAD verschoben, auf den direkt vor der Änderung verwiesen wurde, während alle neu hinzugefügten Änderungen im Stadium bleiben. Klicken Sie in GitTree einfach auf Rückgängig in der Symbolleiste (Cmd+Z auf macOS oder Ctrl+Z auf Windows und Linux) oder öffnen Sie Lost & Found, um den Commit vor der Änderung wiederherzustellen.
Führt git commit --amend pre-commit- und commit-msg-Hooks aus oder behält es GPG/SSH-Signaturen bei?
Ja – git commit --amend löst sowohl pre-commit- als auch commit-msg-Hooks aus, genau wie ein normaler Commit (übergeben Sie --no-verify / -n, um sie bei Bedarf zu umgehen). Da durch die Änderung ein neues Commit-Objekt erstellt wird, wird jede GPG- oder SSH-Signatur auf dem ursprünglichen Commit ersetzt. Wenn Sie commit.gpgsign in Git oder in GitTree Einstellungen › Commit-Signierung aktiviert haben, signiert Git den geänderten Commit automatisch erneut.
Wie ändere ich einen Commit, der zwei oder drei Commits zurückliegt?
git commit --amend bearbeitet nur HEAD. Um einen älteren Commit über die CLI zu ändern, stellen Sie Ihren Fix bereit, führen Sie git commit --fixup=<sha> (oder --fixup=amend:<sha>) und dann git rebase -i --autosquash <sha>~1 aus. Klicken Sie in GitTree mit der rechten Maustaste auf den älteren Commit im Commit-Diagramm und wählen Sie Interactive Rebase from Here…, um ihn umzuformulieren, zu bearbeiten oder visuell zu komprimieren.
Quellen
Behauptungen zu anderen Produkten wurden anhand der offiziellen Seiten auf 11. November 2026 überprüft. Preise und Ausstattung ändern sich; Die Seiten der Anbieter sind die Quelle der Wahrheit.
- Git-Dokumentation – git-commit (--amend, --no-edit, --only, --reset-author)
- Pro Git Book – 7.6 Git Tools: Verlauf neu schreiben (den letzten Commit ändern)
- Git-Dokumentation – git-push (--force-with-lease und --force-if-includes)
- Git-Dokumentation – git-restore (--source und --staged)
- Git-Dokumentation – git-reflog (Wiederherstellen von Commits vor der Änderung)