// Git Emergency

Qu'est-ce que t'as cassé ?

Choisis ta catastrophe. On t'explique ce qui s'est passé, la gravité, et comment t'en sortir — l'option la plus sûre en premier.

fatal: Git a affiché une erreur ? Trouve sa signification et la solution dans notre liste des messages d'erreur.

Commits et travail local

Branches, merges et rebases

Push et remote

J'ai push directement sur main

Sérieux

Pas de PR, pas de review, direct sur main. Annule sans réécrire l'historique partagé.

J'ai oublié de pull avant de push

Mineur

Push refusé, un vilain commit « Merge branch 'main' of… », ou des heures de travail sur une version pas à jour.

Mon push est refusé (non-fast-forward)

Mineur

« Updates were rejected because the remote contains work that you do not have locally. »

J'ai fait un --amend sur un commit déjà poussé

Embêtant

Maintenant git push est refusé et Git dit que ta branche a divergé.

J'ai poussé sur la mauvaise branche

Embêtant

Tes commits ont atterri sur la branche d'un collègue, ou sur une branche avec une faute dans le nom.

J'ai écrasé les commits d'un collègue

Critique

Un git push --force a effacé le travail de quelqu'un d'autre sur le remote.

GitHub refuse un fichier de plus de 100 Mo

Embêtant

« remote: error: File is 245 MB; this exceeds GitHub's file size limit. »

J'ai fait un pull et mon code a disparu

Sérieux

Presque toujours récupérable : Git refuse d'écraser du travail non commité, et le reflog se souvient du reste.

J'ai supprimé une branche sur GitHub / GitLab

Embêtant

Si quelqu'un l'a encore en local, repousse-la. GitHub propose aussi un bouton « Restore branch » sur la pull request.

J'ai poussé avec le mauvais compte GitHub

Mineur

Deux comptes (perso / pro) sur une machine : sépare-les par dossier ou par clé SSH.

Le dépôt a été renommé ou déplacé

Mineur

Fais pointer ton remote vers la nouvelle adresse. Rien d'autre ne change.

J'ai mis un tag sur le mauvais commit

Embêtant

Déplace le tag en local ; s'il a été poussé (et peut-être publié), réfléchis avant de le déplacer.

Pull requests

Ma pull request a des conflits

Embêtant

« This branch has conflicts that must be resolved » : récupère main dans ta branche et règle-les en local.

Ma pull request est en retard sur main

Mineur

« This branch is out-of-date with the base branch » : mets-la à jour, la CI retourne sur le vrai résultat.

Je dois appliquer les changements demandés en review

Mineur

Commite sur la même branche et pousse : la PR se met à jour toute seule. Range les commits avant le merge si ton équipe le veut.

Les checks de ma PR échouent

Mineur

Lis les logs du job en échec, reproduis en local, pousse une correction. Ne merge pas en rouge.

Ma PR montre des commits qui ne sont pas à moi

Embêtant

Ta branche est partie du mauvais endroit (une autre branche de feature, un vieux main). Déplace seulement tes commits.

J'ai ouvert ma PR vers la mauvaise branche

Mineur

Change la base de la PR (bouton Edit à côté du titre). Pas besoin de la fermer.

Ma PR est trop grosse pour être relue

Mineur

Découpe-la en plusieurs petites PR, chacune relisible seule (PR empilées).

Mon fork est en retard sur le dépôt d'origine

Mineur

Ajoute l'original comme upstream, mets à jour ton main, puis rebase ta branche de PR.

J'ai fermé ma PR (ou supprimé sa branche) par erreur

Mineur

Une PR fermée se rouvre ; une branche supprimée se restaure depuis la page de la PR.

Une PR mergée a cassé main

Sérieux

Annule la PR (GitHub a un bouton Revert), déploie, puis corrige au calme dans une nouvelle PR.

Fichiers et dépôt

Sécurité

Règle d'or : avant toute commande destructrice, crée une branche de secours avec git branch backup/before-fix — ça ne coûte rien.