fatal: detected dubious ownership in repository
Cette erreur signifie que le dossier du dépôt appartient à un autre utilisateur que celui qui lance Git. C'est une protection de sécurité ajoutée dans Git 2.35.2, pas une corruption. Une seule commande suffit à la corriger.
Ce que cette erreur signifie
Depuis la version 2.35.2, Git vérifie que le dossier du dépôt appartient bien à l'utilisateur qui lance la commande. S'il appartient à quelqu'un d'autre (root, www-data, un autre compte), Git s'arrête immédiatement. Cela te protège d'une vraie attaque : un dossier .git malveillant déposé dans un répertoire partagé pourrait exécuter du code sur ta machine via des hooks ou des réglages de config.
Pourquoi cela se produit
Volumes Docker et conteneurs
Les fichiers montés dans un conteneur appartiennent souvent à root ou à l'UID de l'hôte, alors que le conteneur lance Git avec un autre utilisateur. Git voit l'écart et refuse.
WSL et disques réseau
Les dépôts sur un disque Windows accédés depuis WSL (sous /mnt/c), ou sur des partages NTFS/réseau, peuvent afficher un propriétaire qui ne correspond pas à ton utilisateur Linux.
Serveurs, CI et sudo
Sur un serveur, un utilisateur de déploiement possède le code mais tu te connectes avec un autre compte. En CI, l'utilisateur du checkout diffère de celui du build. Un seul sudo git ... peut aussi changer le propriétaire de certains fichiers.
Comment corriger
Deux options propres : déclarer le dossier sûr, ou en devenir propriétaire.
Option 1 : déclarer le dossier sûr
Si tu fais confiance au dépôt, copie la commande exacte que Git suggère dans le message d'erreur. Elle n'affecte que ce chemin.
Option 2 : corriger la propriété
Quand les fichiers devraient vraiment t'appartenir, change plutôt le propriétaire. Pour les conteneurs et la CI, le joker est courant car l'environnement est contrôlé.
Comment éviter cette erreur
Évite sudo avec Git
Lancer sudo git ... crée des fichiers appartenant à root dans ton dépôt et provoque cette erreur plus tard. Clone et travaille avec ton utilisateur normal.
Aligne les UIDs dans les conteneurs
Sous Docker, lance le conteneur avec ton UID de l'hôte (--user $(id -u):$(id -g)) ou intègre une entrée safe.directory dans l'image pour ne pas casser les builds.
Des exceptions ciblées
Préfère une entrée safe.directory par chemin plutôt que le joker "*", surtout sur une machine partagée. Cette protection existe pour une bonne raison.
GitQuest est conçu par Anaïs (nouvelle fenêtre), développeuse web et responsable pédagogique, spécialisée en formations tech et accessibilité numérique.
Questions sur dubious ownership
Les erreurs Git deviennent des indices, pas des blocages
GitQuest t'apprend à lire ce que Git te dit vraiment. Entraîne-toi dans un simulateur de terminal sécurisé et transforme chaque message d'erreur en enquête résolue.
Commencer à pratiquer