Git-Fehlermeldungen: Ursache und Lösung

Git-Fehlermeldungen nachschlagen: failed to push some refs, non-fast-forward, detached HEAD, Merge-Konflikt, Permission denied (publickey), index.lock und mehr, jeweils mit Lösungsbefehl.

51 Einträge

Push und Pull

error: failed to push some refs to '…' Updates were rejected because the remote contains work that you do not have locally.failed to push some refs: Auf dem Server liegen Commits, die Sie lokal nicht haben. Erst holen und einarbeiten, dann pushen; nicht mit --force überschreiben.Lösung: git pull --rebase && git push
! [rejected] main -> main (non-fast-forward)Ihr Branch ist hinter dem Remote-Branch. Wie oben: Änderungen holen und einarbeiten.Lösung: git pull --rebase
Updates were rejected because the tip of your current branch is behind its remote counterpart.Gleiche Ursache, oft nach einem Rebase. Wenn Sie den Remote-Stand bewusst ersetzen wollen, nur mit Schutz vor fremden Commits erzwingen.Lösung: git push --force-with-lease
! [rejected] (stale info)--force-with-lease hat erkannt, dass jemand inzwischen gepusht hat. Erst holen und prüfen.Lösung: git fetch && git log HEAD..origin/main
fatal: The current branch feature has no upstream branch.Der Branch existiert noch nicht auf dem Server.Lösung: git push -u origin HEAD
error: src refspec main does not match anyEs gibt lokal keinen Branch dieses Namens, oft weil noch kein Commit existiert oder der Branch master heißt.Lösung: git branch -a
hint: You have divergent branches and need to specify how to reconcile them.Lokaler und Remote-Branch haben beide neue Commits. Legen Sie fest, ob git pull mergen oder rebasen soll.Lösung: git config --global pull.rebase true
fatal: Not possible to fast-forward, aborting.Mit pull.ff=only ist kein Merge erlaubt, die Branches sind aber auseinandergelaufen.Lösung: git pull --rebase
error: cannot pull with rebase: You have unstaged changes.Vor dem Rebase müssen lokale Änderungen weg; Git kann sie automatisch beiseitelegen.Lösung: git pull --rebase --autostash
fatal: refusing to merge unrelated historiesDie beiden Branches haben keinen gemeinsamen Ursprung, etwa wenn das Remote-Repository mit README angelegt wurde.Lösung: git pull origin main --allow-unrelated-histories
fatal: couldn't find remote ref mainDen Branch gibt es auf dem Server nicht. Namen prüfen.Lösung: git ls-remote --heads origin
remote: error: GH013: Repository rule violations found ! [remote rejected] main -> main (push declined due to repository rule violations)Der Branch ist auf GitHub geschützt (Regeln, Pflicht-Reviews oder erkannte Secrets). Über einen eigenen Branch und Pull Request arbeiten.Lösung: git switch -c fix/mein-thema && git push -u origin HEAD
! [remote rejected] main -> main (pre-receive hook declined)Ein Server-Hook hat den Push abgelehnt, etwa wegen Schutzregeln oder Namensvorgaben. Die Zeilen mit remote: darüber nennen den Grund.Lösung: git push -u origin HEAD:mein-branch
Your branch is ahead of 'origin/main' by 2 commits.Kein Fehler: Sie haben lokale Commits, die noch nicht gepusht sind.Lösung: git push
Your branch and 'origin/main' have divergedBeide Seiten haben eigene Commits. Einarbeiten per Rebase oder Merge.Lösung: git pull --rebase

Merge, Rebase, Konflikte

CONFLICT (content): Merge conflict in datei.txt Automatic merge failed; fix conflicts and then commit the result.Merge-Konflikt lösen: Datei öffnen, Bereiche zwischen <<<<<<< und >>>>>>> bereinigen, Datei hinzufügen und abschließen. Abbrechen geht mit git merge --abort.Lösung: git add datei.txt && git commit
error: could not apply 1a2b3c4... NachrichtKonflikt während eines Rebase. Konflikt lösen, Datei hinzufügen und fortsetzen, oder den Rebase abbrechen.Lösung: git add datei.txt && git rebase --continue
fatal: You have not concluded your merge (MERGE_HEAD exists).Ein Merge ist noch offen. Abschließen oder abbrechen.Lösung: git merge --abort
error: Committing is not possible because you have unmerged files.Es gibt noch Dateien mit ungelösten Konflikten.Lösung: git diff --name-only --diff-filter=U
fatal: It seems that there is already a rebase-merge directoryEin früherer Rebase wurde nicht beendet.Lösung: git rebase --abort
error: Your local changes to the following files would be overwritten by mergeUncommittete Änderungen stehen dem Merge im Weg. Committen oder beiseitelegen.Lösung: git stash && git pull && git stash pop
error: Your local changes to the following files would be overwritten by checkoutGleiche Ursache beim Branch-Wechsel.Lösung: git stash && git switch anderer-branch
error: The following untracked working tree files would be overwritten by checkoutNicht versionierte Dateien kollidieren mit Dateien im Ziel-Branch. Verschieben oder, wenn sicher, entfernen.Lösung: git clean -n

Branches und HEAD

You are in 'detached HEAD' state.detached HEAD: Sie stehen auf einem Commit statt auf einem Branch. Neue Commits gehen beim Wechsel leicht verloren; legen Sie einen Branch an.Lösung: git switch -c neuer-branch
error: pathspec 'feature' did not match any file(s) known to gitBranch oder Datei unbekannt, oft fehlt nur ein fetch für einen Remote-Branch.Lösung: git fetch && git switch feature
fatal: A branch named 'feature' already exists.Der Branch existiert schon. Wechseln statt anlegen.Lösung: git switch feature
error: The branch 'feature' is not fully merged.Der Branch enthält Commits, die sonst nirgends stehen. Nur löschen, wenn sie wirklich weg dürfen.Lösung: git branch -D feature
error: cannot delete branch 'feature' used by worktree at '…'Der Branch ist gerade ausgecheckt, im aktuellen oder einem anderen Arbeitsverzeichnis.Lösung: git switch main && git branch -d feature
fatal: ambiguous argument 'HEAD~1': unknown revision or path not in the working tree.Es gibt keinen Vorgänger, etwa beim allerersten Commit, oder der Name ist mehrdeutig.Lösung: git log --oneline
fatal: no upstream configured for branch 'feature'Für den Branch ist kein Remote-Branch hinterlegt.Lösung: git branch --set-upstream-to=origin/feature
error: cannot lock ref 'refs/remotes/origin/feature/x': 'refs/remotes/origin/feature' exists; cannot createEin alter Remote-Branch kollidiert mit dem Namen. Veraltete Verweise aufräumen.Lösung: git remote prune origin

Anmeldung und Verbindung

Permission denied (publickey).Permission denied (publickey): Der Server akzeptiert keinen Ihrer SSH-Schlüssel. Prüfen, welcher Schlüssel angeboten wird und ob er beim Anbieter hinterlegt ist.Lösung: ssh -T git@github.com
remote: Support for password authentication was removed on August 13, 2021.GitHub akzeptiert bei HTTPS kein Kontopasswort mehr. Personal Access Token, Credential Manager oder SSH verwenden.Lösung: git remote set-url origin git@github.com:konto/repo.git
fatal: Authentication failed for 'https://…'Benutzername, Token oder gespeicherte Zugangsdaten sind falsch oder abgelaufen. Im Credential Manager bzw. Schlüsselbund aktualisieren.Lösung: git config --global credential.helper
Host key verification failed.Der Host-Schlüssel des Servers ist unbekannt oder hat sich geändert. Fingerprint beim Anbieter prüfen, dann alten Eintrag entfernen.Lösung: ssh-keygen -R github.com
fatal: unable to access '…': SSL certificate problem: unable to get local issuer certificateDie Zertifizierungsstelle ist nicht bekannt, oft hinter einem Firmen-Proxy. Die Firmen-CA einbinden statt die Prüfung abzuschalten.Lösung: git config --global http.sslCAInfo /pfad/zur/firmen-ca.pem
fatal: repository '…' not foundFalsche URL oder keine Berechtigung; private Repositories melden aus Sicherheitsgründen oft „not found“.Lösung: git remote -v
fatal: 'origin' does not appear to be a git repositoryEs ist kein Remote mit diesem Namen eingerichtet.Lösung: git remote add origin URL
error: remote origin already exists.Der Remote ist schon angelegt. Adresse ändern statt neu anlegen.Lösung: git remote set-url origin URL
error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413Der Push ist für den Server oder einen Proxy zu groß. Große Dateien entfernen oder in kleineren Schritten pushen.Lösung: git count-objects -vH
remote: error: File daten.zip is 120.00 MB; this exceeds GitHub's file size limit of 100.00 MBDatei zu groß für GitHub. Aus dem Commit entfernen; für große Dateien Git LFS nutzen. Steckt sie in älteren Commits, muss die Historie bereinigt werden.Lösung: git rm --cached daten.zip && git commit --amend

Repository und Einrichtung

fatal: not a git repository (or any of the parent directories): .gitSie sind nicht in einem Git-Repository. In den richtigen Ordner wechseln oder ein Repository anlegen.Lösung: git init
Author identity unknown *** Please tell me who you are.Name und E-Mail für Commits fehlen.Lösung: git config --global user.name "Vorname Nachname" && git config --global user.email "name@example.com"
fatal: detected dubious ownership in repository at '…'Das Repository gehört einem anderen Benutzer (seit Git 2.35.2 geprüft). Besitzer korrigieren oder den Ordner ausdrücklich freigeben.Lösung: git config --global --add safe.directory /pfad/zum/repo
fatal: Unable to create '…/.git/index.lock': File exists.Ein anderer Git-Prozess läuft oder ist abgestürzt. Nur wenn sicher kein Git mehr läuft, die Sperrdatei löschen.Lösung: rm .git/index.lock
error: insufficient permission for adding an object to repository database .git/objectsDateien in .git gehören einem anderen Benutzer, oft nach sudo git ….Lösung: sudo chown -R "$(id -un)" .git
fatal: destination path 'repo' already exists and is not an empty directory.Der Zielordner für git clone existiert schon. Anderen Namen angeben.Lösung: git clone URL repo-neu
warning: adding embedded git repository: unterordnerIm Ordner liegt ein weiteres Repository. Als Submodul einbinden oder dessen .git entfernen.Lösung: git rm --cached unterordner
warning: in the working copy of 'datei.txt', LF will be replaced by CRLF the next time Git touches itHinweis zur Zeilenende-Umwandlung durch core.autocrlf. Einheitlich regeln über eine .gitattributes.Lösung: echo "* text=auto" >> .gitattributes
nothing added to commit but untracked files presentEs gibt neue Dateien, die noch nicht vorgemerkt sind.Lösung: git add .
fatal: pathspec 'datei.txt' did not match any filesDatei existiert nicht oder Pfad und Schreibweise stimmen nicht.Lösung: git status

Alles läuft in Ihrem Browser. Eingaben verlassen Ihr Gerät nicht.

Git-Fehler verstehen und lösen

Diese Sammlung erklärt 51 häufige Git-Fehlermeldungen mit Ursache und Lösung, von „failed to push some refs“ über detached HEAD und Merge-Konflikte bis zu „Permission denied (publickey)“ und gesperrten Index-Dateien. Fügen Sie einen markanten Teil Ihrer Meldung in die Suche ein; der Lösungsbefehl lässt sich direkt kopieren.

Die meisten Git Fehler haben wenige Ursachen: Lokaler und entfernter Stand sind auseinandergelaufen, uncommittete Änderungen stehen im Weg, die Anmeldung beim Server klappt nicht oder ein früherer Vorgang wurde nicht abgeschlossen. Lesen Sie die ganze Meldung, besonders die Zeilen mit hint: und remote:; Git schlägt dort oft selbst die richtige Lösung vor.

Vorsicht mit Befehlen, die Arbeit verwerfen: git push --force, git reset --hard, git clean -f und git branch -D lassen sich nur teilweise rückgängig machen. Bevorzugen Sie --force-with-lease und prüfen Sie vorher mit git status und git log. Die passenden Befehle für den Alltag stehen bei den Git-Befehlen; Schlüssel für die SSH-Anmeldung prüfen Sie mit SSH-Schlüssel erklärt.

Anleitung: Git-Fehlermeldungen in 4 Schritten

  1. Kopieren Sie die Fehlermeldung aus dem Terminal und fügen Sie einen markanten Teil in „Suchen“ ein, etwa non-fast-forward.
  2. Lesen Sie Ursache und Lösung des passenden Eintrags.
  3. Kopieren Sie den Lösungsbefehl mit „Kopieren“ und passen Sie Branch- oder Dateinamen an.
  4. Prüfen Sie danach mit git status, ob alles wieder sauber ist.

Typische Anwendungsfälle

  • Einen abgelehnten Push lösen, ohne fremde Commits per --force zu überschreiben.
  • Einen Merge- oder Rebase-Konflikt Schritt für Schritt abschließen oder abbrechen.
  • Anmeldeprobleme bei GitHub, GitLab oder Bitbucket per SSH oder Token beheben.
  • Neue Teammitglieder bei typischen Fehlern unterstützen, ohne jede Meldung einzeln zu erklären.
Fragen

Häufige Fragen

Was tun bei „failed to push some refs“?

Meist liegen auf dem Server Commits, die Sie lokal nicht haben. Holen Sie sie mit git pull --rebase, lösen Sie eventuelle Konflikte und pushen Sie dann erneut. Ein --force würde die Arbeit anderer überschreiben.

Wie komme ich aus dem detached HEAD heraus?

Wenn Sie dort nichts geändert haben: git switch main (oder ein anderer Branch). Haben Sie Commits gemacht, sichern Sie sie zuerst mit git switch -c neuer-branch.

Wie breche ich einen Merge oder Rebase ab?

Mit git merge --abort bzw. git rebase --abort. Git stellt dann den Zustand vor Beginn wieder her. Bei einem Cherry-Pick heißt der Befehl git cherry-pick --abort.

Darf ich .git/index.lock einfach löschen?

Nur wenn sicher kein anderer Git-Prozess läuft, auch keiner aus der IDE oder einem Git-Client im Hintergrund. Die Datei bleibt nach einem Absturz übrig und blockiert dann alle weiteren Befehle.

Kann ich mit git reflog verlorene Commits zurückholen?

Meist ja. git reflog listet, wohin HEAD in den letzten Wochen gezeigt hat, auch nach reset --hard oder einem misslungenen Rebase. Mit git branch rettung <hash> sichern Sie den gefundenen Stand. Nicht committete Änderungen stehen dort allerdings nicht.

Warum sind Git-Meldungen bei mir auf Deutsch?

Git übersetzt Meldungen nach der Spracheinstellung des Systems. Für die Suche im Netz hilft oft die englische Fassung: Starten Sie den Befehl dafür mit LANG=C git … (Linux, macOS, Git Bash) oder setzen Sie die Umgebungsvariable LANG=en_US.UTF-8.

Weitere Werkzeuge

Das könnte auch helfen

Alle 558 Werkzeuge