Direkt zum Inhalt

Git Amend Erklärt: Eine Schritt-für-Schritt-Anleitung mit Beispielen

In dieser umfassenden Anleitung lernst du, wie du mit git commit --amend Fehler korrigieren, vergessene Änderungen hinzufügen und den Git-Verlauf verwalten kannst.
Aktualisierte 6. Juni 2025  · 8 Min. Lesezeit

Wenn du eine Änderung festlegst und dann einen Tippfehler entdeckst oder eine Datei übersiehst, ist das eine bekannte Frustration. Das ist der Punkt, an dem git commit --amend glänzt.

Damit kannst du deinen letzten Commit bearbeiten, egal ob du eine Nachricht korrigierst oder Änderungen hinzufügst, ohne deinen Verlauf zu überladen. Das ist wichtig für ein sauberes, professionelles Git-Protokoll, vor allem bei Teamprojekten, wo Klarheit die Zusammenarbeit fördert. 

In diesem Leitfaden führe ich dich durch die Grundlagen von Git amend, fortgeschrittene Anwendungen, Risiken und Best Practices zur Verfeinerung deines Workflows.

> Für einen soliden Einstieg in Git solltest du den Kurs Einführung in Git an.

Ändern des letzten Commits

In diesem Abschnitt wird erklärt, wie du deinen letzten Commit mit git commit --amend aktualisieren kannst. Dieser Befehl ist nützlich, um Commit-Meldungen zu korrigieren und verpasste Änderungen hinzuzufügen, damit dein Git-Verlauf sauber und professionell bleibt.

Korrektur von Commit-Meldungen

Genaue Commit-Meldungen sind wichtig für eine klare Dokumentation. Ein Tippfehler oder eine vage Notiz kann Mitarbeiter in die Irre führen.

Um die letzte Commit-Nachricht zu überarbeiten, führe sie aus:

git commit --amend

Der obige Befehl öffnet deinen Editor, mit dem du die Nachricht bearbeiten kannst. Nach der Bearbeitung speichere und schließe die Übergabe, um deinen Verlauf ordentlich und anschaulich zu halten.

Erläuterung: Der obige Befehl ersetzt die Nachricht im letzten Commit durch deine überarbeitete Version und vermeidet so zusätzliche Commits für Korrekturen.

Verpasste Änderungen einbeziehen

Es kommt häufig vor, dass du nach dem Commit vergisst, eine Datei oder eine Änderung einzubinden. Anstatt einen zweiten Commit nur für die Korrektur zu erstellen, kann git commit --amend alles in den ursprünglichen Commit übernehmen.

Schritte:

  • Aktualisiere oder füge die fehlenden Dateien hinzu.
  • Inszeniere die Updates mit:
git add <file-name>
  • Ändere die vorherige Übertragung, ohne die Nachricht zu ändern:
git commit --amend --no-edit

Erläuterung: Das --no-edit Flag behält die ursprüngliche Nachricht bei und aktualisiert nur den Inhalt. Das Ergebnis ist eine saubere, konsolidierte Commit-Historie.

Diagramm zum Ändern eines Git Commits, um Dateien und Nachrichten zu aktualisieren.

Ein Diagramm, das zeigt, wie git amend den ursprünglichen Commit umwandelt.

> Für einen tieferen Einblick in die Git-Basics, ist der Kurs Foundations of Git ist ein hervorragender nächster Schritt.

Lerne heute die Git-Grundlagen

Für Anfänger: Master-Versionskontrolle mit Git.
Kostenloses Lernen beginnen

Fortgeschrittene Änderungstechniken

In diesem Abschnitt geht es um die anspruchsvolle Nutzung von git amend und verwandten Tools. Diese eignen sich für komplexe Arbeitsabläufe.

Interaktives Rebase für historische Commits

Der Befehl git commit --amend ist praktisch, wenn du nur die letzte Übertragung korrigieren musst. 

Aber was ist, wenn der Fehler zwei oder drei Commits zurückliegt? Hier kommt interactive rebase ins Spiel. Damit kannst du ältere Commits bearbeiten, neu anordnen, löschen oder verwerfen - und so die Geschichte mit Präzision umschreiben.

Angenommen, du möchtest einen deiner letzten drei Commits ändern. Beginne damit, eine interaktive Umbasierung zu starten:

git rebase -i HEAD~3

Dadurch wird ein Texteditor geöffnet, der deine letzten drei Commits auflistet, denen jeweils das Wort pick vorangestellt ist, etwa so:

pick a1b2c3 Commit message 1
pick d4e5f6 Commit message 2
pick 789abc Commit message 3
  • Ändere pick in edit neben dem Commit, den du überarbeiten willst.
  • Speichere und schließe den Editor.

Git hält bei dem ausgewählten Commit an und fordert dich auf, Änderungen vorzunehmen.

Nimm jetzt die Änderungen vor, die du brauchst:

  • Bearbeite die Dateien nach Bedarf.
  • Führe die Veränderungen durch:
git add .
  • Ändere den Commit:
git commit --amend
  • Aktualisiere die Übergabemeldung, wenn nötig, speichere und schließe den Editor. 
  • Wenn deine Änderungen abgeschlossen sind, sag Git, dass du fortfahren sollst:
git rebase --continue

Git wendet alle verbleibenden Commits auf deine aktualisierten Commits an. Wenn es Konflikte gibt, löse sie, bevor du git rebase --continue erneut ausführst.

Erläuterung: Die obigen Befehle schreiben die Historie für die letzten drei Commits neu und ermöglichen es dir, ältere Einträge zu verfeinern.

Hinweis: Interaktives Rebase schreibt die Commit-Hashes neu. Wenn der Zweig mit anderen geteilt wurde (z. B. an ein Remote-System übertragen), kann das Umschreiben der Historie zu Problemen bei den Beteiligten führen. Verwende sie nur auf lokalen oder privaten Zweigen oder sprich mit deinem Team, bevor du sie erzwingst (git push --force).

Fixup-Commits in CI/CD-Pipelines

In CI/CD-Pipelines ist eine saubere und übersichtliche Git-Historie mehr als nur ästhetisch - sie unterstützt übersichtliche Protokolle, eine einfachere Fehlersuche und eine besser vorhersehbare Automatisierung. 

Wenn du kleinere Korrekturen vornimmst (z.B. einen Tippfehler korrigieren, eine Konfiguration aktualisieren oder einen Test optimieren), kannst du fixup commits verwenden, anstatt laute eigenständige Commits zu erstellen.

Um einen Commit vorzubereiten, der beim Rebase automatisch mit einem vorherigen Commit zusammengeführt wird, führe aus:

git commit --fixup <commit-hash>

Dadurch wird ein spezieller Commit erstellt, der als fixup für den angegebenen Commit und signalisiert damit, dass er bei einem interaktiven Rebase kombiniert werden soll.

Tipp: Verwende git log oder git rebase -i, um das Ziel zu finden, falls nötig.

Um den Fixup-Commit bei einem Rebase sauber mit dem Original zusammenzuführen, verwende das --autosquash Flag:

git rebase -i --autosquash HEAD~5

Dies öffnet den Rebase-Editor, in dem Git die Fixup-Commits für das Squashing automatisch neu anordnet und kennzeichnet.

  • Es ist nicht nötig, pick manuell in fixupzu ändern - Git macht das für dich.
  • Bestätige einfach den Umbasierungsplan und speichere die Datei.

Erläuterung: Wenn du Fixup-Commits mit --autosquash verwendest, kannst du kleinere Änderungen in den richtigen historischen Commit gruppieren, anstatt die Historie mit Mikro-Commits zu überladen. Das Ergebnis ist ein sauberes, lineares Protokoll, das:

  • Vereinfacht Auditing und Debugging in CI/CD-Umgebungen
  • Reduziert das Rauschen in Pull Requests und Merge Logs
  • Hilft, Build- oder Testprobleme zu vermeiden, die auf unvollständige oder irreführende Commits zurückzuführen sind

> Um über die Grundlagen hinauszugehenGrundlagen hinauszugehen, geht unser Kurs Intermediate Git geht auf fortgeschrittene Befehle wie amend und rebase näher ein.

Mechanische Implikationen der Änderung

Das Ändern von Commits ändert deinen Git-Verlauf. Dieser Abschnitt befasst sich mit den technischen Auswirkungen von Änderungen an Commits. Wenn du sie verstehst, kannst du sie sicher verwenden.

Hash-Ungültigkeit und Unveränderlichkeit

Jeder Git-Commit hat einen eindeutigen SHA-1 (oder SHA-256 in neueren Versionen) Hash, der aus seinem Inhalt, den Metadaten und dem übergeordneten Commit berechnet wird. Durch das Ändern wird ein neuer Hash erstellt, der die Unveränderlichkeit bricht, wenn er geteilt wird.

Wenn der ursprüngliche Commit bereits auf einen gemeinsamen Remote-Zweig gepusht wurde, führt dies zu einer Unstimmigkeit zwischen deinem lokalen und deinem entfernten Zweig.

Um den aktualisierten Verlauf zu pushen, musst du die Aktualisierung erzwingen:

git push --force

Hinweis: Wie bereits erwähnt, kann --force die Arbeit von Kolleginnen und Kollegen überschreiben und für Verwirrung sorgen. Am sichersten ist es, Commits vor dem Pushen zu ändern oder Force Pushes nur auf privaten Zweigen mit Koordination zu verwenden.

Reflog und Datenwiederherstellung

Auch wenn geänderte Commits überschrieben werden, löscht Git sie nicht sofort. Git führt einen Lernpfad (reflog), der Aktualisierungen von Verzweigungsreferenzen (wie HEAD oder origin/main) verfolgt, einschließlich geänderter oder gelöschter Commits.

Du kannst es mit ansehen:

git reflog

Hier werden die letzten Änderungen mit den dazugehörigen Commit-Hashes aufgelistet.

Um einen verlorenen Commit wiederherzustellen:

 git checkout <old-commit-hash>

Du kannst dann davon abzweigen, Änderungen herauspicken oder verlorene Arbeit überprüfen.

Erläuterung: Reflog dient als Sicherheitsnetz, mit dem du Commits zurückholen kannst, die nach einer Änderung oder einem Rebase "verloren" scheinen. Das ist praktisch, wenn ein Force Push oder die Umschreibung der Geschichte schief geht.

Überlegungen zum kollaborativen Workflow

git commit --amend ist zwar ein mächtiges Werkzeug, um die Geschichte zu bereinigen, aber der Einsatz in kollaborativen Umgebungen muss sorgfältig gehandhabt werden. 

Das Umschreiben der öffentlichen Geschichte kann zu Verwirrung, Fehlern oder sogar Datenverlust führen, wenn es nicht richtig koordiniert wird.

Risiko der Änderung von öffentlichen Zusagen

Ich sage es noch einmal: Sobald ein Commit in ein gemeinsames Remote-Repository gepusht wurde, ändert sich sein Hash und sein Verlauf. Das führt zu "Nicht-schnell-vorwärts"-Fehlern, wenn andere versuchen, zu ziehen oder zu schieben, da ihr lokaler Verlauf nicht mehr mit dem entfernten übereinstimmt.

Wenn du einen öffentlichen Commit ändern musst:

  • Informiere dein Team, um Konflikte zu vermeiden.
  • Verwende git push --force-with-lease für sicherere Updates.

Der obige Befehl stellt sicher, dass du den entfernten Zweig nur dann überschreibst, wenn er sich seit deinem letzten Fetch nicht geändert hat, um das Risiko zu minimieren, die Arbeit anderer zu zerstören.

Bewährte Praxis: Vermeide es, gemeinsame Commits zu ändern, wenn es nicht unbedingt notwendig ist. Erstelle lieber einen neuen Commit oder benutze revert, um die Stabilität des Teams zu erhalten.

Maßnahmen zum Schutz der Branche

Viele Teams setzen Regeln zum Schutz von Zweigen durch - vor allem auf main, master oder Release-Zweigen - um Force Pushes und direkte Änderungen zu verhindern. Dies kann alle Force-Pushes im Zusammenhang mit Änderungen blockieren, nachdem der Commit gepusht wurde.

Um dies sicher zu umgehen:

  • Änderungen vornehmen vor dem Schieben.
  • Arbeiten in Funktionszweigen die nicht geschützt sind.
  • Wenn eine Korrektur in einem geschützten Zweig erforderlich ist:
    • Erstelle stattdessen einen neuen Commit.
    • Oder beantrage bei den Repository-Administratoren eine Ausnahme mit entsprechender Begründung.

> Wenn du über GitHub zusammenarbeitesttHub zusammenarbeitest, hilft dir der Lernpfad GitHub Foundations hilft dir, deine Kenntnisse über den GitHub-Workflow zu festigen.

Unterstützung bei Werkzeugen und Schnittstellen

Das Ändern von Commits muss nicht auf die Kommandozeile beschränkt sein. 

Viele Git-Tools bieten benutzerfreundliche Oberflächen, die den Prozess vor allem für Anfänger leichter zugänglich machen. Die Wahl der richtigen Schnittstelle kann sowohl das Vertrauen als auch die Produktivität steigern.

GUI-Kunden

GUI-Tools machen git amend mit visuellen Elementen zugänglich:

  • Quellennachweis: Das Kontrollkästchen "Ändern" im Festschreibungsfenster ermöglicht es den Benutzern, die Änderungen vor dem Bestätigen anzusehen und zu ändern.
  • GitKraken: Ermöglicht Drag-and-Drop-Neuordnung und interaktive Commit-Bearbeitung, einschließlich Änderungsunterstützung.
  • GitHub Desktop: Ermöglicht es Nutzern, den letzten Commit direkt aus der Commit-Historienansicht mit einem einfachen Toggle zu ändern.

Diese Tools bieten visuelles Feedback in EchtzeitSie verringern das Risiko versehentlicher Fehler und sind besonders hilfreich für diejenigen, die Git gerade erst lernen.

CLI vs. GUI Workflow Benchmarks

CLI (git commit --amend) ist schnell, aber fehleranfällig für Anfänger. GUIs bieten Sicherheit mit visuellen Hinweisen, können aber fortgeschrittene Benutzer ausbremsen. 

GUIs können Neulingen das Lernen auf jeden Fall erleichtern. Ich habe mit Sourcetree angefangen, um die Änderungsabläufe zu verstehen, bevor ich wegen der Geschwindigkeit und Kontrolle auf CLI umgestiegen bin.

Hier findest du einen visuellen Vergleich der Änderungsunterstützung der gängigen Git-Tools:

Vergleich der Git-GUI-Tools für Änderungsoptionen.

Tabelle zum Vergleich der Änderungsfunktionen von GUI-Tools.

Bewährte Praktiken und Empfehlungen

Abschließend sind hier die wichtigsten Grundsätze für den effektiven und sicheren Einsatz von git commit --amend in realen Arbeitsabläufen aufgeführt:

Änderungen, die nur lokal gelten

Ändere nur lokale Commits, um Remote-Probleme zu vermeiden. Überprüfe git log und lege die Teamregeln in den Projektdokumenten fest.

Atomare Commits und Team-Protokolle

Erstelle kleine, atomare Commits für gezielte Änderungen. Stimme dich mit deinem Team über die Größe der Commits ab und überprüfe sie, bevor du sie veröffentlichst, um Fehler zu erkennen.

Automatisierte Backups und Aufklärung

Verwende Backups (z.B. Git-Hooks, CI-Snapshots), bevor du Änderungen vornimmst, und mache dich mit Tools wie git reflog vertraut, um Fehler schnell zu beheben.

Fazit

git commit --amend ist ein mächtiger Befehl, mit dem du deinen Commit-Verlauf aufpolieren, Fehler korrigieren und deine Arbeit übersichtlich darstellen kannst. Wenn du es mit Bedacht einsetzt - vor allem bei lokalen Commits - hilft es dir, ein sauberes, professionelles Git-Protokoll ohne Unordnung und Verwirrung zu führen.

Um deine Git-Kenntnisse weiter auszubauen, kannst du den Git-Kurs für Fortgeschrittene besuchen oder das Complete Git Cheat Sheet zum schnellen Nachschlagen herunterladen.

Viel Spaß beim Kodieren und behalte deine Geschichte im Kopf!

Lerne heute die Git-Grundlagen

Für Anfänger: Master-Versionskontrolle mit Git.

FAQs

Behält git amend die Informationen über den Autor des ursprünglichen Commits?

Ja, der Autor und der Zeitstempel werden standardmäßig beibehalten. Um den Autor zu ändern, verwende git commit --amend --author="Name " für Aktualisierungen.

Kann ich einen Commit ändern, ohne seinen Zeitstempel zu verändern?

Auf jeden Fall. Verwende git commit --amend --date=, um den ursprünglichen Zeitstempel zu erhalten, was für genaue historische Aufzeichnungen nützlich ist.

Was ist, wenn git amend fehlschlägt, weil es keine Staged Changes gibt?

Wenn nichts bereitgestellt wird, schlägt git amend fehl, es sei denn, du verwendest git commit --amend --allow-empty, oft für reine Nachrichtenänderungen.

Wie wirkt sich git amend auf Commit-Hooks aus?

Das Ändern löst Commit-Hooks wie Pre-Commit-Skripte aus. Sorge dafür, dass die Haken die Änderung nicht blockieren, wenn sie strenge Regeln durchsetzen.

Kann ich einen geänderten Commit ohne Reflog-Zugriff wiederherstellen?

Das ist hart. Ohne reflog brauchst du einen Backup-Zweig oder den Original-Hash. Überprüfe immer Backups oder reflog, um Verluste zu vermeiden.

Ändert git amend den Commit-Hash?

Ja. Da Git Commits durch ihren Inhalt und ihre Metadaten identifiziert werden, erzeugt jede Änderung - auch Ergänzungen - einen neuen Commit-Hash.

Kann ich einen Commit ändern, der bereits gepusht wurde?

Technisch gesehen, ja, aber es erfordert einen Kraftschub (git push --force). Das kann Mitarbeiter/innen stören und wird daher nur für private oder lokale Zweigstellen empfohlen.

Wie unterscheidet sich git amend von git rebase?

git amend wirkt sich nur auf den letzten Commit aus, während du mit git rebase die Historie über mehrere Commits hinweg umschreiben kannst, was es zwar mächtiger, aber auch riskanter macht.

Was passiert, wenn ich beim Ändern --no-edit verwende?

Mit dem Flag --no-edit bleibt die vorherige Commit-Nachricht unverändert, während der Inhalt des Commits aktualisiert wird. Das ist ideal, wenn du gerade eine Datei oder einen Tippfehler übersehen hast.

Kann ich eine Änderung rückgängig machen, wenn ich einen Fehler gemacht habe?

Ja. Git's reflog verfolgt deine früheren Commit-Referenzen. Verwende git reflog um den alten Hash zu finden und stelle ihn mit git checkout wieder her.


Khalid Abdelaty's photo
Author
Khalid Abdelaty
LinkedIn

Data Engineer mit Fachkenntnissen in Python und Azure Cloud-Technologien, spezialisiert auf den Aufbau skalierbarer Datenpipelines und ETL-Prozesse. Zurzeit studiert er Informatik an der Universität Tanta und macht einen Bachelor of Science. Zertifizierter DataCamp Data Engineer mit nachgewiesener Erfahrung in Datenmanagement und Programmierung. Ehemaliger Microsoft Data Engineer Intern bei der Digital Egypt Pioneers Initiative und Microsoft Beta Student Ambassador, der technische Workshops leitet und Hackathons organisiert.

Themen

Lerne mit diesen Kursen mehr über Git!

Kurs

Introduction to GitHub Concepts

2 Std.
26K
Learn how to use GitHub's various features, navigate the interface and perform everyday collaborative tasks.
Siehe DetailsRight Arrow
Kurs starten
Mehr anzeigenRight Arrow
Verwandt

Der Blog

Die 50 besten AWS-Interview-Fragen und Antworten für 2025

Ein kompletter Leitfaden zur Erkundung der grundlegenden, mittleren und fortgeschrittenen AWS-Interviewfragen, zusammen mit Fragen, die auf realen Situationen basieren.
Zoumana Keita 's photo

Zoumana Keita

15 Min.

Der Blog

Lehrer/innen und Schüler/innen erhalten das Premium DataCamp kostenlos für ihre gesamte akademische Laufbahn

Keine Hacks, keine Tricks. Schüler/innen und Lehrer/innen, lest weiter, um zu erfahren, wie ihr die Datenerziehung, die euch zusteht, kostenlos bekommen könnt.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

4 Min.

Der Blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates hat im zweiten Quartal 2023 über 20.000 Stipendien an unsere gemeinnützigen Partner vergeben. Erfahre, wie fleißige benachteiligte Lernende diese Chancen in lebensverändernde berufliche Erfolge verwandelt haben.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

Der Blog

Top 30 Generative KI Interview Fragen und Antworten für 2024

Dieser Blog bietet eine umfassende Sammlung von Fragen und Antworten zu generativen KI-Interviews, die von grundlegenden Konzepten bis hin zu fortgeschrittenen Themen reichen.
Hesam Sheikh Hassani's photo

Hesam Sheikh Hassani

15 Min.

Der Blog

Die 20 besten Snowflake-Interview-Fragen für alle Niveaus

Bist du gerade auf der Suche nach einem Job, der Snowflake nutzt? Bereite dich mit diesen 20 besten Snowflake-Interview-Fragen vor, damit du den Job bekommst!
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

15 Min.

Der Blog

2022-2023 DataCamp Classrooms Jahresbericht

Zu Beginn des neuen Schuljahres ist DataCamp Classrooms motivierter denn je, das Lernen mit Daten zu demokratisieren. In den letzten 12 Monaten sind über 7.650 neue Klassenzimmer hinzugekommen.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

8 Min.

Mehr anzeigenMehr anzeigen