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 --rebaseUpdates 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/mainfatal: The current branch feature has no upstream branch.Der Branch existiert noch nicht auf dem Server.Lösung: git push -u origin HEADerror: 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 -ahint: 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 truefatal: Not possible to fast-forward, aborting.Mit pull.ff=only ist kein Merge erlaubt, die Branches sind aber auseinandergelaufen.Lösung: git pull --rebaseerror: 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 --autostashfatal: 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-historiesfatal: couldn't find remote ref mainDen Branch gibt es auf dem Server nicht. Namen prüfen.Lösung: git ls-remote --heads originremote: 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-branchYour branch is ahead of 'origin/main' by 2 commits.Kein Fehler: Sie haben lokale Commits, die noch nicht gepusht sind.Lösung: git pushYour branch and 'origin/main' have divergedBeide Seiten haben eigene Commits. Einarbeiten per Rebase oder Merge.Lösung: git pull --rebaseMerge, 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 commiterror: 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 --continuefatal: You have not concluded your merge (MERGE_HEAD exists).Ein Merge ist noch offen. Abschließen oder abbrechen.Lösung: git merge --aborterror: 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=Ufatal: It seems that there is already a rebase-merge directoryEin früherer Rebase wurde nicht beendet.Lösung: git rebase --aborterror: 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 poperror: Your local changes to the following files would be overwritten by checkoutGleiche Ursache beim Branch-Wechsel.Lösung: git stash && git switch anderer-brancherror: 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 -nBranches 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-brancherror: 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 featurefatal: A branch named 'feature' already exists.Der Branch existiert schon. Wechseln statt anlegen.Lösung: git switch featureerror: 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 featureerror: 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 featurefatal: 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 --onelinefatal: no upstream configured for branch 'feature'Für den Branch ist kein Remote-Branch hinterlegt.Lösung: git branch --set-upstream-to=origin/featureerror: 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 originAnmeldung 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.comremote: 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.gitfatal: 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.helperHost 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.comfatal: 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.pemfatal: repository '…' not foundFalsche URL oder keine Berechtigung; private Repositories melden aus Sicherheitsgründen oft „not found“.Lösung: git remote -vfatal: 'origin' does not appear to be a git repositoryEs ist kein Remote mit diesem Namen eingerichtet.Lösung: git remote add origin URLerror: remote origin already exists.Der Remote ist schon angelegt. Adresse ändern statt neu anlegen.Lösung: git remote set-url origin URLerror: 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 -vHremote: 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 --amendRepository 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 initAuthor 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/repofatal: 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.lockerror: 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)" .gitfatal: 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-neuwarning: adding embedded git repository: unterordnerIm Ordner liegt ein weiteres Repository. Als Submodul einbinden oder dessen .git entfernen.Lösung: git rm --cached unterordnerwarning: 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" >> .gitattributesnothing 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 statusKein Eintrag gefunden. Versuchen Sie einen anderen Begriff oder wählen Sie „Alle Gruppen“.
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
- Kopieren Sie die Fehlermeldung aus dem Terminal und fügen Sie einen markanten Teil in „Suchen“ ein, etwa
non-fast-forward. - Lesen Sie Ursache und Lösung des passenden Eintrags.
- Kopieren Sie den Lösungsbefehl mit „Kopieren“ und passen Sie Branch- oder Dateinamen an.
- Prüfen Sie danach mit
git status, ob alles wieder sauber ist.
Typische Anwendungsfälle
- Einen abgelehnten Push lösen, ohne fremde Commits per
--forcezu ü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.
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.
Das könnte auch helfen
HTTP-Statuscodes
Alle gängigen HTTP-Statuscodes von 100 bis 511 mit Bedeutung, typischer Ursache und Suche.
ÖffnenHTTP-Header-Referenz
Wichtige Anfrage- und Antwort-Header mit Bedeutung und Beispiel, durchsuchbar.
ÖffnenMIME-Typen
Über 150 MIME-Typen nachschlagen: Dateiendung zu Content-Type und umgekehrt.
ÖffnenGit-Befehle
Git-Spickzettel: die wichtigsten Befehle nach Aufgaben gruppiert, durchsuchbar und kopierbar.
ÖffnenBash-Befehle
Bash- und Linux-Befehle für Dateien, Text, Prozesse und Netzwerk, mit Suche und Kopieren.
ÖffnenPort-Liste
Bekannte TCP- und UDP-Ports von 20 bis 51820 mit Dienst und Hinweis, durchsuchbar.
Öffnen