// Messages d'erreur

Les messages d'erreur Git, traduits

Git parle en phrases cryptiques. Colle ou cherche ton message : voici ce qu'il veut dire et comment t'en sortir.

fatal: not a git repository (or any of the parent directories): .git

Pas un dépôt Git

Ce que ça veut dire
Tu es dans un dossier que Git ne suit pas : mauvais dossier, ou git init n'a jamais été lancé.
Comment réparer
Va dans le dossier de ton projet, ou crée un dépôt à cet endroit.
Sans risque
$ cd path/to/your/project
Sans risque
$ git init
Guide complet
git@github.com: Permission denied (publickey).

Permission denied (publickey)

Ce que ça veut dire
Le serveur n'a pas accepté ta clé SSH : pas de clé, clé non ajoutée à ton compte, ou l'agent ne l'a pas chargée.
Comment réparer
Teste la connexion, puis suis notre configuration de clé SSH.
Sans risque
$ ssh -T git@github.com
Guide complet
remote: Support for password authentication was removed.

Authentification par mot de passe refusée

Ce que ça veut dire
GitHub n'accepte plus le mot de passe de ton compte en HTTPS.
Comment réparer
Utilise une clé SSH (recommandé), ou un token d'accès personnel à la place du mot de passe.
Guide complet
! [rejected] main -> main (fetch first)
error: failed to push some refs

Push refusé

Ce que ça veut dire
Quelqu'un a poussé sur la branche depuis ton dernier pull.
Comment réparer
Récupère d'abord leurs commits, puis pousse. Ne règle jamais ça avec --force.
Prudence
$ git pull --rebase
Sans risque
$ git push
Guide complet
fatal: The current branch feature has no upstream branch.

Pas de branche distante associée

Ce que ça veut dire
Cette branche n'existe qu'en local : Git ne sait pas où la pousser.
Comment réparer
Pousse-la une fois avec -u, ensuite un simple git push suffit.
Sans risque
$ git push -u origin HEAD
fatal: refusing to merge unrelated histories

Historiques sans lien

Ce que ça veut dire
En général : tu as créé un README sur GitHub et aussi commité en local. Les deux historiques n'ont aucun commit commun.
Comment réparer
Autorise le merge une fois, puis résous les conflits s'il y en a.
Prudence
$ git pull origin main --allow-unrelated-histories
Your branch and 'origin/main' have diverged

Ta branche a divergé

Ce que ça veut dire
Tu as des commits locaux et le remote en a d'autres. Git demande comment les combiner.
Comment réparer
Rejoue tes commits par-dessus (historique linéaire), et fais-en le comportement par défaut.
Prudence
$ git pull --rebase
Sans risque
$ git config --global pull.rebase true
error: Your local changes to the following files would be overwritten by checkout

Des modifications locales seraient écrasées

Ce que ça veut dire
Tu as des modifications non commitées qui entrent en conflit avec la branche ou le pull.
Comment réparer
Mets-les de côté avec stash, fais ton opération, puis ramène-les.
Sans risque
$ git stash push -u -m "wip"
Prudence
$ git stash pop
error: remote origin already exists.

Le remote existe déjà

Ce que ça veut dire
Un remote « origin » est déjà configuré.
Comment réparer
Change son URL au lieu de l'ajouter une seconde fois.
Sans risque
$ git remote -v
Prudence
$ git remote set-url origin git@github.com:OWNER/REPO.git
error: src refspec main does not match any

src refspec does not match any

Ce que ça veut dire
La branche que tu pousses n'existe pas encore : aucun commit fait, ou elle s'appelle master et pas main.
Comment réparer
Vérifie le nom de la branche et fais au moins un commit.
Sans risque
$ git branch
Sans risque
$ git commit -m "chore: initial commit"
error: pathspec 'feature/x' did not match any file(s) known to git

pathspec did not match

Ce que ça veut dire
Une faute de frappe dans le nom de branche ou de fichier, ou la branche n'existe que sur le remote et n'a pas été récupérée.
Comment réparer
Fais un fetch, puis liste les branches pour trouver le nom exact.
Sans risque
$ git fetch origin
Sans risque
$ git branch -a
fatal: Unable to create '.git/index.lock': File exists.

index.lock existe déjà

Ce que ça veut dire
Un autre processus Git tourne (ou a planté et laissé son fichier de verrou).
Comment réparer
Ferme le panneau Git de ton éditeur et les autres terminaux. Si aucune commande Git ne tourne, supprime le verrou.
Prudence
$ rm .git/index.lock
CONFLICT (content): Merge conflict in src/app.ts

Conflit de merge

Ce que ça veut dire
Les deux côtés ont modifié les mêmes lignes.
Comment réparer
Édite les fichiers, retire les marqueurs, puis add et commit — ou annule.
Sans risque
$ git merge --abort
Guide complet
remote: error: File big.zip is 245.00 MB; this exceeds GitHub's file size limit of 100.00 MB

Fichier trop gros pour GitHub

Ce que ça veut dire
Un fichier de plus de 100 Mo est dans un des commits que tu pousses.
Comment réparer
Retire-le de l'historique avant de pousser (et utilise Git LFS pour les gros fichiers).
Guide complet
warning: LF will be replaced by CRLF the next time Git touches it

Avertissement LF / CRLF

Ce que ça veut dire
Windows et Linux/macOS ne terminent pas les lignes de la même façon. C'est un avertissement, pas une erreur.
Comment réparer
Sous Windows, laisse Git convertir automatiquement. En équipe, un fichier .gitattributes règle la question pour tout le monde.
Sans risque
$ git config --global core.autocrlf true
nothing to commit, working tree clean

Rien à commiter

Ce que ça veut dire
Git ne voit aucun changement : fichiers non enregistrés, modifications pas indexées avec git add, ou fichiers ignorés.
Comment réparer
Enregistre tes fichiers, indexe-les, et vérifie qu'ils ne sont pas ignorés.
Sans risque
$ git status
Sans risque
$ git check-ignore -v path/to/file
fatal: unable to access 'https://github.com/…': Could not resolve host: github.com

Impossible de joindre le serveur

Ce que ça veut dire
Un problème réseau : pas de connexion, un proxy, un VPN, ou un pare-feu d'entreprise.
Comment réparer
Vérifie ta connexion, et l'URL du remote.
Sans risque
$ git remote -v
Sans risque
$ ping github.com
You are in 'detached HEAD' state.

Detached HEAD

Ce que ça veut dire
Tu as fait un checkout d'un commit ou d'un tag au lieu d'une branche.
Comment réparer
Crée une branche pour garder ton travail, ou retourne sur ta branche.
Sans risque
$ git switch -c rescue/detached-work
Guide complet
remote: Repository not found.
fatal: repository 'https://github.com/OWNER/REPO.git/' not found

Dépôt introuvable

Ce que ça veut dire
Mauvaise URL (faute de frappe, dépôt renommé), ou dépôt privé auquel ton compte n'a pas accès.
Comment réparer
Vérifie l'URL, puis tes droits d'accès. Es-tu connecté avec le bon compte ?
Sans risque
$ git remote -v
Prudence
$ git remote set-url origin git@github.com:OWNER/REPO.git
fatal: 'origin' does not appear to be a git repository
fatal: Could not read from remote repository.

Aucun remote nommé origin

Ce que ça veut dire
Le dépôt n'a pas encore de remote (créé avec git init), ou il porte un autre nom.
Comment réparer
Liste les remotes, et ajoute origin s'il manque.
Sans risque
$ git remote -v
Sans risque
$ git remote add origin git@github.com:OWNER/REPO.git
Guide complet
error: RPC failed; HTTP 413 curl 22
fatal: the remote end hung up unexpectedly

Le serveur a coupé pendant le push

Ce que ça veut dire
Un push trop gros pour HTTPS (gros fichiers, beaucoup de commits), ou une connexion instable.
Comment réparer
Préfère SSH, retire les gros fichiers de l'historique (ou utilise Git LFS), ou pousse en plusieurs fois.
Prudence
$ git remote set-url origin git@github.com:OWNER/REPO.git
Sans risque
$ git push origin HEAD~10:main
Guide complet
Host key verification failed.
fatal: Could not read from remote repository.

Vérification de la clé d'hôte échouée

Ce que ça veut dire
SSH ne connaît pas (ou ne reconnaît plus) le serveur. La première connexion doit être confirmée.
Comment réparer
Connecte-toi une fois et réponds « yes » après avoir vérifié l'empreinte dans la doc de l'hébergeur. Si la clé a changé, supprime d'abord l'ancienne.
Sans risque
$ ssh -T git@github.com
Prudence
$ ssh-keygen -R github.com
Guide complet
fatal: could not read Username for 'https://github.com': terminal prompts disabled

Git ne peut pas demander tes identifiants

Ce que ça veut dire
Remote en HTTPS, pas d'identifiants enregistrés, et pas de terminal pour les demander (IDE, CI, script).
Comment réparer
Passe le remote en SSH, ou configure un gestionnaire d'identifiants / un token.
Prudence
$ git remote set-url origin git@github.com:OWNER/REPO.git
Guide complet
! [remote rejected] main -> main (protected branch hook declined)

Branche protégée

Ce que ça veut dire
La branche n'accepte les changements que via des pull / merge requests (et parfois une review ou la CI).
Comment réparer
Pousse ton travail sur une nouvelle branche et ouvre une pull request. C'est la protection qui fait son travail.
Sans risque
$ git switch -c fix/my-change
Sans risque
$ git push -u origin HEAD
remote: error: GH013: Repository rule violations found
remote: - Push cannot contain secrets

Push bloqué : un secret a été détecté

Ce que ça veut dire
GitHub a trouvé une clé ou un token dans les commits que tu pousses. Bonne nouvelle : il n'a jamais quitté ta machine.
Comment réparer
Retire le secret des commits (amend du dernier, ou réécriture des commits non poussés), mets-le dans .env, puis repousse. Révoque-le en cas de doute.
Sans risque
$ git rm --cached .env
Prudence
$ git commit --amend --no-edit
Guide complet
fatal: shallow update not allowed

Clone superficiel (shallow)

Ce que ça veut dire
Le dépôt a été cloné avec --depth (fréquent en CI) : une partie de l'historique manque.
Comment réparer
Télécharge l'historique complet.
Sans risque
$ git fetch --unshallow
fatal: The upstream branch of your current branch does not match the name of your current branch.

Branche distante avec un autre nom

Ce que ça veut dire
Ta branche locale suit une branche distante qui porte un autre nom.
Comment réparer
Pousse vers une branche du même nom, ou corrige le suivi.
Sans risque
$ git push -u origin HEAD
Sans risque
$ git branch -u origin/my-branch
error: cannot lock ref 'refs/remotes/origin/feature/login': 'refs/remotes/origin/feature' exists

cannot lock ref

Ce que ça veut dire
Une branche distante obsolète entre en conflit avec une nouvelle (par exemple « feature » et « feature/login »).
Comment réparer
Nettoie les branches distantes qui n'existent plus.
Sans risque
$ git fetch --prune
Your branch is ahead of 'origin/main' by 3 commits.

Ta branche est en avance

Ce que ça veut dire
Pas une erreur : tu as des commits locaux pas encore poussés.
Comment réparer
Pousse-les quand tu es prêt.
Sans risque
$ git log --oneline origin/main..HEAD
Sans risque
$ git push
Your branch is behind 'origin/main' by 4 commits, and can be fast-forwarded.

Ta branche est en retard

Ce que ça veut dire
Pas une erreur : le remote a de nouveaux commits que tu n'as pas.
Comment réparer
Récupère-les.
Sans risque
$ git pull
fatal: You have not concluded your merge (MERGE_HEAD exists).

Un merge est encore en cours

Ce que ça veut dire
Un merge précédent s'est arrêté sur des conflits et n'a jamais été terminé.
Comment réparer
Termine-le (résoudre, add, commit) ou annule-le.
Sans risque
$ git status
Sans risque
$ git merge --abort
Guide complet
fatal: It seems that there is already a rebase-merge directory, and I wonder if you are in the middle of another rebase.

Un rebase est encore en cours

Ce que ça veut dire
Un rebase précédent a été interrompu (conflit, terminal fermé).
Comment réparer
Continue-le ou annule-le. Seulement si les deux refusent, supprime le dossier restant.
Prudence
$ git rebase --continue
Sans risque
$ git rebase --abort
Destructrice
$ rm -rf .git/rebase-merge
Guide complet
error: cannot pull with rebase: You have unstaged changes.

Des modifications non indexées bloquent le rebase

Ce que ça veut dire
Le rebase a besoin d'un répertoire de travail propre.
Comment réparer
Laisse Git les mettre de côté et les restaurer automatiquement.
Prudence
$ git pull --rebase --autostash
Sans risque
$ git config --global rebase.autoStash true
fatal: Not possible to fast-forward, aborting.

Fast-forward impossible

Ce que ça veut dire
Ta config n'autorise que les pulls en fast-forward, mais ta branche et le remote ont divergé.
Comment réparer
Choisis explicitement : rejouer tes commits (rebase), ou merger.
Prudence
$ git pull --rebase
Sans risque
$ git pull --no-rebase
error: The following untracked working tree files would be overwritten by checkout:

Des fichiers non suivis seraient écrasés

Ce que ça veut dire
Des fichiers non suivis par Git existent là où l'autre branche a des fichiers du même nom.
Comment réparer
Déplace-les, ou mets-les de côté avec les fichiers non suivis. Vérifie avant de supprimer quoi que ce soit.
Sans risque
$ git stash push -u -m "before switch"
Sans risque
$ git clean -n
CONFLICT (content): Merge conflict in app.ts
The stash entry is kept in case you need it again.

Conflit en appliquant un stash

Ce que ça veut dire
Les modifications du stash entrent en conflit avec le code actuel. Le stash est conservé, rien n'est perdu.
Comment réparer
Résous les conflits, puis supprime le stash toi-même.
Sans risque
$ git status
Prudence
$ git stash drop
Guide complet
error: The branch 'feature/x' is not fully merged.

Branche pas entièrement mergée

Ce que ça veut dire
git branch -d te protège : cette branche a des commits qui n'existent nulle part ailleurs.
Comment réparer
Vérifie ce qui serait perdu. Force la suppression seulement si tu es sûr.
Sans risque
$ git log --oneline main..feature/x
Destructrice
$ git branch -D feature/x
fatal: a branch named 'feature/x' already exists

La branche existe déjà

Ce que ça veut dire
Tu as essayé de créer une branche avec un nom déjà pris.
Comment réparer
Bascule dessus, ou choisis un autre nom.
Sans risque
$ git switch feature/x
fatal: tag 'v1.2.0' already exists

Le tag existe déjà

Ce que ça veut dire
Un tag de ce nom existe en local ou sur le remote. Un tag n'est pas censé bouger.
Comment réparer
Crée un nouveau numéro de version. Déplacer un tag publié casse tous ceux qui l'utilisent.
Sans risque
$ git tag --list "v1.*"
Prudence
$ git fetch --tags --force
Guide complet
fatal: ambiguous argument 'HEAD~1': unknown revision or path not in the working tree.

Révision inconnue

Ce que ça veut dire
Le commit, la branche ou le fichier n'existe pas (faute de frappe, ou pas de commit avant HEAD dans un nouveau dépôt).
Comment réparer
Vérifie le nom. Pour désigner un fichier, sépare-le avec --.
Sans risque
$ git log --oneline -n 5
Sans risque
$ git log -- path/to/file
fatal: your current branch 'main' does not have any commits yet

Aucun commit pour l'instant

Ce que ça veut dire
Le dépôt est tout neuf : la branche n'existe qu'après le premier commit.
Comment réparer
Fais le premier commit.
Sans risque
$ git add .
$ git commit -m "chore: initial commit"
Guide complet
fatal: detected dubious ownership in repository at '/path/to/repo'

Propriétaire douteux

Ce que ça veut dire
Le dossier appartient à un autre utilisateur (copié d'un autre disque, Docker, WSL…). Git refuse par sécurité.
Comment réparer
Si tu fais confiance à ce dossier, marque-le comme sûr.
Prudence
$ git config --global --add safe.directory /path/to/repo
error: insufficient permission for adding an object to repository database .git/objects

Permissions insuffisantes sur .git

Ce que ça veut dire
Des fichiers de .git appartiennent à root : en général après une commande git lancée avec sudo.
Comment réparer
Rends le dossier à ton utilisateur. Et n'utilise jamais sudo avec git.
Prudence
$ sudo chown -R "$(whoami)" .git
error: object file .git/objects/ab/cdef… is empty
fatal: loose object abcdef… is corrupt

Dépôt corrompu

Ce que ça veut dire
Des fichiers de .git ont été abîmés (plantage, disque plein, outil de synchro comme Dropbox / OneDrive).
Comment réparer
Sauvegarde d'abord tout le dossier. Ensuite vérifie, et si besoin re-clone et recopie tes modifications.
Sans risque
$ git fsck --full
Guide complet
warning: adding embedded git repository: vendor/lib

Un dépôt dans le dépôt

Ce que ça veut dire
Un sous-dossier a son propre .git (souvent une bibliothèque clonée). Seul un pointeur est ajouté, pas ses fichiers.
Comment réparer
Soit tu supprimes le .git interne pour garder les fichiers, soit tu en fais un vrai sous-module.
Sans risque
$ git rm --cached vendor/lib
Sans risque
$ git submodule add https://github.com/OWNER/lib.git vendor/lib
Guide complet
fatal: in unpopulated submodule 'vendor/lib'

Dossier de sous-module vide

Ce que ça veut dire
Le clone ne télécharge pas les sous-modules par défaut.
Comment réparer
Initialise-les et télécharge-les.
Sans risque
$ git submodule update --init --recursive
Guide complet
error: unable to create file src/…/very/long/path.ts: Filename too long

Nom de fichier trop long (Windows)

Ce que ça veut dire
Windows limite les chemins à 260 caractères par défaut.
Comment réparer
Autorise les chemins longs dans Git (et dans Windows si besoin).
Sans risque
$ git config --global core.longpaths true
error: invalid path 'docs/notes:draft.md'

Chemin invalide (Windows)

Ce que ça veut dire
Un nom de fichier contient un caractère ou un nom interdit par Windows (: * ? " < > |, aux, con…).
Comment réparer
Renomme le fichier depuis macOS / Linux (ou sur GitHub), commite, puis refais le pull sous Windows.
Sans risque
$ git mv "docs/notes:draft.md" docs/notes-draft.md
error: gpg failed to sign the data
fatal: failed to write commit object

La signature du commit a échoué

Ce que ça veut dire
La signature des commits est activée mais GPG ne peut pas demander la phrase de passe ou ne trouve pas la clé.
Comment réparer
Indique à GPG quel terminal utiliser, vérifie la clé configurée, ou signe plutôt avec ta clé SSH.
Sans risque
$ export GPG_TTY=$(tty)
Sans risque
$ git config --global user.signingkey
Guide complet
Changes not staged for commit:
  modified:   src/app.ts

Modifications non indexées

Ce que ça veut dire
Pas une erreur : tu as modifié des fichiers sans faire git add, ils ne seront donc pas dans le commit.
Comment réparer
Indexe ce que tu veux commiter.
Sans risque
$ git add -p
Sans risque
$ git add path/to/file
Guide complet
*** Please tell me who you are.

Run

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

fatal: unable to auto-detect email address

Please tell me who you are (identité manquante)

Ce que ça veut dire
Git signe chaque commit avec un nom et un email, et aucun n'est configuré sur cette machine.
Comment réparer
Configure ton nom et ton email une fois pour toutes. Mets l'email de GitHub pour que tes commits soient reliés à ton compte.
Sans risque
$ git config --global user.name "Ada Lovelace"
Sans risque
$ git config --global user.email "ada@example.com"
Guide complet
git: 'stauts' is not a git command. See 'git --help'.

The most similar command is
	status

« … » n'est pas une commande git

Ce que ça veut dire
Une faute de frappe, une commande d'un autre outil, ou un alias qui n'existe pas sur cette machine.
Comment réparer
Lis la suggestion de Git juste sous l'erreur. Tu peux demander à Git de proposer la correction tout seul.
Sans risque
$ git config --global help.autocorrect prompt
Guide complet
error: unknown option `hard'
usage: git commit [<options>] [--] <pathspec>...

Option inconnue

Ce que ça veut dire
L'option n'existe pas pour cette commande (ou pour ta version de Git), ou il manque un tiret (-m ou --message).
Comment réparer
Regarde la ligne « usage » affichée par Git, et ta version : les options récentes (git switch, git restore) demandent Git 2.23+.
Sans risque
$ git --version
error: switch `m' requires a value

L'option demande une valeur

Ce que ça veut dire
L'option attend quelque chose derrière : souvent un message de commit perdu à cause des guillemets (apostrophes sous l'invite de commandes Windows).
Comment réparer
Mets le message entre guillemets doubles.
Sans risque
$ git commit -m "fix: login button on Safari"
fatal: bad config line 12 in file .git/config

Ligne de config invalide

Ce que ça veut dire
Un fichier de configuration a été modifié à la main et contient une erreur de syntaxe (guillemet, crochet, encodage).
Comment réparer
Ouvre le fichier cité à la ligne indiquée et corrige-la, ou supprime le réglage fautif.
Sans risque
$ git config --global --edit
Sans risque
$ git config --local --edit
Guide complet
hint: Waiting for your editor to close the file...

Git attend que tu fermes l'éditeur

Ce que ça veut dire
Git a ouvert ton éditeur (VS Code, Bloc-notes…) pour un message et attend que tu fermes cet onglet ou cette fenêtre.
Comment réparer
Écris le message, enregistre, ferme l'onglet. Pour VS Code, configure-le avec --wait.
Sans risque
$ git config --global core.editor "code --wait"
error: There was a problem with the editor 'vi'.
Please supply the message using either -m or -F option.

Problème avec l'éditeur

Ce que ça veut dire
L'éditeur a été fermé sans enregistrer, a planté, ou n'est pas installé.
Comment réparer
Donne le message avec -m, ou configure un éditeur que tu as.
Sans risque
$ git commit -m "message"
Sans risque
$ git config --global core.editor nano
Please enter a commit message to explain why this merge is necessary,
especially if it merges an updated upstream into a topic branch.

Coincé dans un éditeur qui demande pourquoi ce merge

Ce que ça veut dire
git pull a créé un commit de merge et ouvert Vim pour son message. Rien n'est cassé : Git t'attend.
Comment réparer
Dans Vim : appuie sur Échap, tape :wq puis Entrée pour valider. Pour éviter ça, fais tes pull en rebase.
Sans risque
$ git config --global pull.rebase true
Guide complet
E325: ATTENTION
Found a swap file by the name ".git/.COMMIT_EDITMSG.swp"

Vim a trouvé un fichier swap

Ce que ça veut dire
Une session Vim précédente sur le message de commit a planté ou est encore ouverte quelque part.
Comment réparer
Appuie sur D pour supprimer le fichier swap (si aucun autre Vim n'est ouvert), puis continue.
Prudence
$ rm .git/.COMMIT_EDITMSG.swp
fatal: destination path 'my-project' already exists and is not an empty directory.

Le dossier de destination existe déjà

Ce que ça veut dire
git clone crée un nouveau dossier, et un dossier non vide de ce nom existe déjà.
Comment réparer
Clone dans un autre nom de dossier, ou va dans le dossier existant : c'est peut-être déjà le projet.
Sans risque
$ git clone https://github.com/owner/repo.git my-project-2
Guide complet
warning: You appear to have cloned an empty repository.

Tu as cloné un dépôt vide

Ce que ça veut dire
Le dépôt existe mais n'a encore aucun commit. Ce n'est pas une erreur.
Comment réparer
Ajoute des fichiers, fais le premier commit et pousse-le.
Sans risque
$ git add .
Sans risque
$ git commit -m "Initial commit"
Sans risque
$ git push -u origin main
Guide complet
fatal: could not create work tree dir 'repo': Permission denied

Impossible de créer le dossier du dépôt

Ce que ça veut dire
Tu clones dans un dossier où tu n'as pas le droit d'écrire (dossier système, dossier d'un autre utilisateur).
Comment réparer
Clone dans tes propres dossiers (Documents, dossier personnel).
Sans risque
$ cd ~
fatal: unable to access 'https://github.com/owner/repo.git/': SSL certificate problem: unable to get local issuer certificate

Problème de certificat SSL

Ce que ça veut dire
Ton réseau (proxy d'entreprise, antivirus) intercepte le HTTPS, ou Git n'utilise pas les certificats de ton système.
Comment réparer
Sous Windows, fais utiliser à Git les certificats du système. Ne désactive jamais sslVerify durablement : ça t'expose aux attaques.
Sans risque
$ git config --global http.sslBackend schannel
ssh: connect to host github.com port 22: Connection timed out
fatal: Could not read from remote repository.

Port SSH 22 bloqué

Ce que ça veut dire
Ton réseau (école, entreprise, Wi-Fi public) bloque le SSH sur le port 22.
Comment réparer
GitHub accepte aussi le SSH sur le port 443 : ajoute ceci à ~/.ssh/config. Ou passe en HTTPS.
Sans risque
$ Host github.com
$ Hostname ssh.github.com
$ Port 443
$ User git
Guide complet
remote: Permission to owner/repo.git denied to other-user.
fatal: unable to access 'https://github.com/owner/repo.git/': The requested URL returned error: 403

Accès refusé (403)

Ce que ça veut dire
Tu es authentifié, mais avec un compte qui n'a pas le droit de pousser ici : un ancien compte mémorisé par le gestionnaire d'identifiants, ou pas d'accès en écriture.
Comment réparer
Efface les identifiants GitHub mémorisés (ils seront redemandés au prochain push), ou demande l'accès en écriture au propriétaire.
Prudence
$ git credential reject <<< $'protocol=https\nhost=github.com\n'
error: No such remote 'upstream'

Ce remote n'existe pas

Ce que ça veut dire
Le nom du remote est faux ou n'a jamais été ajouté (upstream est fréquent après un fork).
Comment réparer
Liste tes remotes, puis ajoute celui qui manque.
Sans risque
$ git remote -v
Sans risque
$ git remote add upstream https://github.com/original/repo.git
Guide complet
fatal: No configured push destination.

Aucune destination de push

Ce que ça veut dire
Le dépôt n'a aucun remote : il a été créé avec git init et jamais relié à GitHub / GitLab.
Comment réparer
Crée le dépôt en ligne, ajoute-le comme origin, puis pousse.
Sans risque
$ git remote add origin https://github.com/owner/repo.git
Sans risque
$ git push -u origin main
Guide complet
fatal: couldn't find remote ref feature/login

Branche distante introuvable

Ce que ça veut dire
La branche que tu pull ou fetch n'existe pas sur le serveur : faute de frappe, déjà supprimée, ou jamais poussée.
Comment réparer
Liste les branches distantes et utilise le nom exact.
Sans risque
$ git ls-remote --heads origin
Your branch is based on 'origin/feature/login', but the upstream is gone.

La branche distante a disparu

Ce que ça veut dire
La branche distante a été supprimée (souvent après le merge de sa pull request).
Comment réparer
Si le travail est mergé, reviens sur main et supprime la branche locale. Sinon, repousse-la.
Sans risque
$ git switch main && git pull
Sans risque
$ git branch -d feature/login
Guide complet
remote: error: refusing to update checked out branch: refs/heads/main

Refus de mettre à jour la branche en cours

Ce que ça veut dire
Tu pousses vers un dépôt normal (avec des fichiers) dont la branche actuelle est celle que tu pousses : ça désynchroniserait ses fichiers.
Comment réparer
Pousse vers un dépôt « bare » (git init --bare) ou vers une autre branche.
Sans risque
$ git init --bare /srv/git/project.git
fatal: refusing to fetch into branch 'refs/heads/main' checked out at '/home/me/project'

Refus de fetch dans la branche en cours

Ce que ça veut dire
git fetch origin main:main met à jour une branche locale directement, mais c'est celle sur laquelle tu es.
Comment réparer
Sur la branche en cours, utilise plutôt git pull.
Sans risque
$ git pull --rebase
fatal: invalid reference: feature/login

Référence invalide

Ce que ça veut dire
La branche ou le commit cité n'existe pas en local (faute de frappe, ou seulement sur le remote et pas récupéré).
Comment réparer
Fais un fetch, puis vérifie le nom exact.
Sans risque
$ git fetch
Sans risque
$ git branch -a
fatal: 'origin/feature' is not a commit and a branch 'feature' cannot be created from it

Pas un commit : impossible de créer la branche

Ce que ça veut dire
Tu crées une branche depuis une branche distante que ton dépôt ne connaît pas encore.
Comment réparer
Fais d'abord un fetch, puis crée-la.
Sans risque
$ git fetch origin
Sans risque
$ git switch feature
fatal: Not a valid object name: 'main'.

Nom d'objet invalide

Ce que ça veut dire
En général un dépôt tout neuf : il n'y a encore aucun commit, donc aucune branche d'où partir.
Comment réparer
Fais un premier commit, puis crée tes branches.
Sans risque
$ git commit --allow-empty -m "Initial commit"
warning: refname 'main' is ambiguous.

Nom de référence ambigu

Ce que ça veut dire
Deux choses portent le même nom : souvent une branche et un tag (main), ou une branche nommée origin/main.
Comment réparer
Trouve le doublon et renomme ou supprime le mauvais.
Sans risque
$ git show-ref main
fatal: 'main' is already checked out at '/home/me/project'

Branche déjà ouverte dans un autre worktree

Ce que ça veut dire
Avec git worktree, une branche ne peut être ouverte que dans un seul dossier à la fois.
Comment réparer
Utilise l'autre dossier, ou supprime le worktree inutile.
Sans risque
$ git worktree list
Prudence
$ git worktree remove ../old-folder
error: Cannot delete branch 'feature' checked out at '/home/me/project'

Impossible de supprimer la branche actuelle

Ce que ça veut dire
Tu es sur la branche que tu essaies de supprimer.
Comment réparer
Change d'abord de branche.
Sans risque
$ git switch main
Sans risque
$ git branch -d feature
Guide complet
warning: ignoring broken ref refs/remotes/origin/HEAD

Référence cassée ignorée

Ce que ça veut dire
Une référence pointe vers quelque chose qui n'existe plus (souvent origin/HEAD après le renommage de la branche par défaut).
Comment réparer
Laisse Git la recalculer.
Sans risque
$ git remote set-head origin --auto
fatal: No names found, cannot describe anything.

Aucun tag pour décrire

Ce que ça veut dire
git describe a besoin d'un tag annoté, et il n'y en a aucun.
Comment réparer
Crée un tag annoté, ou autorise les tags légers.
Sans risque
$ git tag -a v0.1.0 -m "First version"
Sans risque
$ git describe --tags --always
Aborting commit due to empty commit message.

Commit annulé : message vide

Ce que ça veut dire
L'éditeur a été fermé sans message, donc Git a annulé le commit. Rien n'est perdu.
Comment réparer
Recommence le commit avec un message.
Sans risque
$ git commit -m "feat: what you changed"
Guide complet
fatal: cannot do a partial commit during a merge.

Pas de commit partiel pendant un merge

Ce que ça veut dire
Pendant un merge, un commit prend tout : git commit <fichier> n'est pas autorisé.
Comment réparer
Ajoute les fichiers résolus, puis commit sans nom de fichier.
Sans risque
$ git add .
Sans risque
$ git commit
Guide complet
error: could not apply 3f2a1b9... feat: login form
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".

Impossible d'appliquer un commit (conflit de rebase)

Ce que ça veut dire
Pendant un rebase ou un cherry-pick, un commit touche des lignes modifiées ailleurs : Git s'arrête pour que tu choisisses.
Comment réparer
Corrige les fichiers en conflit, ajoute-les, continue. Ou abandonne pour revenir à avant.
Sans risque
$ git status
Sans risque
$ git add . && git rebase --continue
Sans risque
$ git rebase --abort
Guide complet
CONFLICT (modify/delete): src/old.ts deleted in HEAD and modified in feature. Version feature of src/old.ts left in tree.

Conflit : modifié d'un côté, supprimé de l'autre

Ce que ça veut dire
Une branche a supprimé un fichier que l'autre a modifié. Git ne peut pas deviner qui a raison.
Comment réparer
Garde le fichier (git add) ou confirme la suppression (git rm), puis continue.
Sans risque
$ git add src/old.ts
Prudence
$ git rm src/old.ts
Guide complet
error: commit 4b1c2d3 is a merge but no -m option was given.

Commit de merge sans option -m

Ce que ça veut dire
Pour annuler ou cherry-picker un merge, Git doit savoir quel parent est la ligne principale.
Comment réparer
Utilise -m 1 (la branche dans laquelle tu as mergé, en général main).
Prudence
$ git revert -m 1 4b1c2d3
Guide complet
The previous cherry-pick is now empty, possibly due to conflict resolution.

Le cherry-pick est vide

Ce que ça veut dire
Le changement est déjà sur cette branche : après les conflits, il ne reste rien à appliquer.
Comment réparer
Passe-le.
Sans risque
$ git cherry-pick --skip
error: You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).

Un cherry-pick est en cours

Ce que ça veut dire
Un cherry-pick s'est arrêté sur des conflits et n'a jamais été terminé.
Comment réparer
Termine-le ou abandonne-le.
Sans risque
$ git cherry-pick --continue
Sans risque
$ git cherry-pick --abort
fatal: There is no merge to abort (MERGE_HEAD missing).

Aucun merge à annuler

Ce que ça veut dire
Le merge est déjà terminé (commité) ou n'a jamais commencé.
Comment réparer
Pour défaire un merge déjà fait et pas poussé, reviens à ORIG_HEAD.
Destructrice
$ git reset --merge ORIG_HEAD
Guide complet
fatal: No rebase in progress?

Aucun rebase en cours

Ce que ça veut dire
Tu as lancé rebase --continue/--abort mais aucun rebase n'est en cours.
Comment réparer
Vérifie l'état ; un rebase terminé peut se défaire avec le reflog.
Sans risque
$ git status
Sans risque
$ git reflog -n 15
No stash entries found.

Aucun stash trouvé

Ce que ça veut dire
La liste des stashs est vide (ou ce numéro de stash n'existe pas).
Comment réparer
Liste tes stashs. Un stash supprimé par erreur peut parfois être retrouvé.
Sans risque
$ git stash list
Sans risque
$ git fsck --unreachable | grep commit
Guide complet
error: bad signature 0x00000000
fatal: index file corrupt

Fichier index corrompu

Ce que ça veut dire
Le fichier .git/index a été abîmé (plantage, disque plein, outil de synchro comme OneDrive ou Dropbox).
Comment réparer
L'index se reconstruit depuis le dernier commit ; tes fichiers ne sont pas touchés.
Prudence
$ rm .git/index
Sans risque
$ git reset
Guide complet
remote: warning: File assets/video.mp4 is 62.00 MB; this is larger than GitHub's recommended maximum file size of 50.00 MB

Fichier au-dessus des 50 Mo conseillés par GitHub

Ce que ça veut dire
Le push a marché, mais ce fichier alourdit le dépôt pour toujours. Au-delà de 100 Mo, GitHub refuse.
Comment réparer
Passe ce genre de fichier dans Git LFS.
Sans risque
$ git lfs track "*.mp4"
Guide complet
Encountered 3 file(s) that should have been pointers, but weren't:

Des fichiers auraient dû être des pointeurs LFS

Ce que ça veut dire
Des fichiers couverts par les règles LFS du .gitattributes ont été commités sans LFS (LFS pas installé au moment du commit).
Comment réparer
Installe LFS, puis renormalise ces fichiers.
Sans risque
$ git lfs install
Sans risque
$ git add --renormalize . && git commit -m "chore: move files to LFS"
fatal: Cannot update paths and switch to branch 'feature' at the same time.

Impossible de changer de branche et de fichiers en même temps

Ce que ça veut dire
git checkout a reçu à la fois une branche et des noms de fichiers, souvent parce que la branche distante n'est pas encore récupérée.
Comment réparer
Fais un fetch, puis change de branche avec la commande moderne.
Sans risque
$ git fetch origin
Sans risque
$ git switch feature
This branch has conflicts that must be resolved

Cette branche a des conflits à résoudre (PR)

Ce que ça veut dire
main a modifié les mêmes lignes que ta pull request depuis que tu l'as ouverte.
Comment réparer
Merge ou rebase main dans ta branche en local, règle les conflits, pousse.
Sans risque
$ git fetch origin
$ git merge origin/main
Guide complet
This branch is out-of-date with the base branch

Cette branche est en retard sur la base (PR)

Ce que ça veut dire
Le dépôt exige que les branches de PR contiennent le dernier main avant le merge.
Comment réparer
Clique sur « Update branch », ou merge/rebase main en local et pousse.
Sans risque
$ git fetch origin
$ git merge origin/main
$ git push
Guide complet
Merging is blocked
Review required: at least 1 approving review is required by reviewers with write access.

Merge bloqué : review obligatoire

Ce que ça veut dire
La protection de branche exige l'approbation de quelqu'un d'autre avant le merge.
Comment réparer
Demande une review (Reviewers, en haut à droite). Pousser de nouveaux commits peut annuler les anciennes approbations.
Sans risque
$ gh pr edit 123 --add-reviewer teammate
Guide complet
Some checks were not successful
Required statuses must pass before merging

Les checks obligatoires doivent passer avant le merge

Ce que ça veut dire
Un job de CI (lint, tests, build) a échoué ou tourne encore, et le dépôt l'exige.
Comment réparer
Ouvre le détail du check en échec, reproduis en local, pousse une correction.
Sans risque
$ gh pr checks 123
Guide complet
There isn't anything to compare.
main and feature are identical.

Rien à comparer (PR vide)

Ce que ça veut dire
Ta branche n'a aucun commit que la base n'a pas déjà : pas poussé, ou commité sur une autre branche.
Comment réparer
Vérifie que tes commits sont sur cette branche et poussés.
Sans risque
$ git log --oneline origin/main..HEAD
Sans risque
$ git push -u origin HEAD
a pull request for branch "feature" into branch "main" already exists:
https://github.com/owner/repo/pull/123

Une pull request existe déjà pour cette branche

Ce que ça veut dire
Une branche = une PR ouverte. La tienne est déjà ouverte : pousser la met à jour.
Comment réparer
Pousse simplement sur la branche ; ou ouvre la PR existante depuis le lien.
Sans risque
$ gh pr view --web
aborted: you must first push the current branch to a remote, or use the --head flag

Il faut d'abord pousser la branche

Ce que ça veut dire
gh pr create a besoin que ta branche existe sur GitHub.
Comment réparer
Pousse-la, puis crée la PR.
Sans risque
$ git push -u origin HEAD
$ gh pr create --fill