Troubleshooting
Résoudre les problèmes courants
Ce chapitre couvre les situations problématiques fréquentes et comment les résoudre.
Problèmes Git courants
“Your branch is behind”
Your branch is behind 'origin/main' by 3 commits
Solution :
# Option 1 : Merge (garde l'historique)
git pull origin main
# Option 2 : Rebase (historique linéaire)
git pull --rebase origin main“Your branch has diverged”
Your branch and 'origin/main' have diverged
Solution :
# Voir la situation
git log --oneline --graph --all
# Option 1 : Rebase sur main
git rebase origin/main
# Résoudre les conflits si nécessaire
git rebase --continue
# Option 2 : Merge
git merge origin/mainConflits de merge
CONFLICT (content): Merge conflict in file.js
Solution :
# Voir les fichiers en conflit
git status
# Ouvrir et résoudre manuellement
# Chercher <<<<<<<, =======, >>>>>>>
# Après résolution
git add file.js
git commit -m "Resolve merge conflict"Avec un agent :
"Résous le conflit dans src/app.js.
Contexte : on veut garder les deux fonctionnalités
ajoutées par chaque branche."
“Detached HEAD”
You are in 'detached HEAD' state
Solution :
# Revenir à une branche
git checkout main
# Ou créer une branche à partir de l'état actuel
git checkout -b my-new-branchCommit sur la mauvaise branche
Déplacer le dernier commit :
# Sauvegarder le commit
git log -1 # Noter le hash
# Annuler le commit (garder les changements)
git reset --soft HEAD~1
# Changer de branche
git stash
git checkout correct-branch
git stash pop
# Commiter sur la bonne branche
git add .
git commit -m "Your message"Annuler un push
# Créer un commit qui annule les changements
git revert HEAD
# Ou plusieurs commits
git revert HEAD~3..HEAD
# Push le revert
git pushÉvitez git push --force sur main ou des branches où d’autres travaillent. Utilisez git revert à la place.
Problèmes avec les agents
L’agent a cassé le projet
# Solution rapide : tout annuler
git checkout .
git clean -fd # Supprime les fichiers non suivis
# Solution ciblée : voir ce qui a changé
git diff
# Annuler fichier par fichier
git checkout -- file-that-works.js
# Revenir à un bon état connu
git log --oneline
git checkout abc1234 -- .L’agent a créé des fichiers indésirables
# Voir les fichiers non suivis
git status
# Supprimer un fichier spécifique
rm unwanted-file.txt
# Supprimer tous les fichiers non suivis
git clean -fd
# Preview avant de supprimer
git clean -fd --dry-runL’agent a modifié des fichiers qu’il ne fallait pas
# Voir les fichiers modifiés
git diff --name-only
# Restaurer certains fichiers
git checkout -- config/production.json
git checkout -- .env.exampleCode incompréhensible
Demandez des explications :
"Explique ce que fait cette fonction ligne par ligne :
[coller le code]"
Ou demandez une réécriture :
"Réécris cette fonction de manière plus simple
et lisible, avec des commentaires explicatifs."
Problèmes d’authentification
“Permission denied (publickey)”
# Vérifier que l'agent SSH tourne
eval "$(ssh-agent -s)"
# Lister les clés chargées
ssh-add -l
# Si vide, ajouter la clé
ssh-add ~/.ssh/id_ed25519
# Tester la connexion
ssh -T [email protected]“Repository not found”
Causes possibles : 1. URL incorrecte 2. Pas d’accès au repo 3. Mauvais compte authentifié
# Vérifier l'URL
git remote -v
# Vérifier l'accès
gh auth status
# Corriger l'URL si nécessaire
git remote set-url origin [email protected]:user/repo.gitToken expiré
# GitHub CLI
gh auth refresh
# Ou re-login
gh auth loginProblèmes de CI/CD
Les tests passent localement mais pas en CI
Causes courantes :
- Variables d’environnement :
# Vérifier que les secrets sont configurés
# GitHub → Settings → Secrets- Versions différentes :
# Fixer les versions dans le workflow
- uses: actions/setup-node@v4
with:
node-version: '20.10.0' # Version exacte- État du cache :
# Invalider le cache
key: ${{ runner.os }}-${{ hashFiles('**/lockfile') }}-v2 # Changer v2- Différences OS :
# Tester sur le même OS
runs-on: ubuntu-22.04 # Version spécifiqueLe workflow ne se déclenche pas
# Vérifier le trigger
on:
push:
branches: [main] # La branche est-elle correcte ?
paths:
- 'src/**' # Le path match-t-il ?Timeout
jobs:
build:
timeout-minutes: 30 # Augmenter si nécessaire
steps:
- name: Long step
timeout-minutes: 10 # Timeout par step
run: npm testRécupération de données
Fichiers supprimés par erreur
# Si non commité
git checkout -- deleted-file.js
# Si dans un commit précédent
git log --all --full-history -- path/to/file
git checkout abc1234 -- path/to/fileRetrouver du travail perdu
# L'historique de HEAD
git reflog
# Exemple de sortie :
# abc1234 HEAD@{0}: reset: moving to HEAD~3
# def5678 HEAD@{1}: commit: My work ← Le travail "perdu"
# Récupérer
git checkout def5678
# ou
git cherry-pick def5678Récupérer un stash supprimé
# Lister tous les objets perdus
git fsck --lost-found
# Chercher dans les objets
git show <hash>
# Récupérer
git stash apply <hash>Problèmes de performance
Clone lent
# Clone superficiel (sans historique complet)
git clone --depth 1 https://github.com/user/repo.git
# Clone partiel (blobs à la demande)
git clone --filter=blob:none https://github.com/user/repo.gitGit status lent
# Voir ce qui prend du temps
GIT_TRACE=1 git status
# Ignorer les changements de permission
git config core.fileMode false
# Sur les gros repos
git config core.untrackedCache true
git config core.fsmonitor trueRepo devenu énorme
# Voir les plus gros fichiers
git rev-list --objects --all | \
git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' | \
awk '/^blob/ {print $3, $4}' | sort -rn | head -20
# Nettoyer (après suppression des gros fichiers)
git gc --aggressive --prune=nowFAQ
Faut-il mentionner l’utilisation d’IA dans les commits ?
C’est une décision d’équipe. Options : - Ajouter [AI] ou [ai-assisted] dans le message - Utiliser un trailer : AI-assisted: Claude - Ne pas mentionner si le code a été révisé
L’IA peut-elle résoudre mes conflits Git ?
Oui, souvent efficacement :
"J'ai un conflit de merge dans file.js.
Le conflit est :
[coller le conflit]
Contexte : on veut [expliquer l'intention]"
Comment maintenir du code qu’on ne comprend pas ?
- Demandez des explications à l’agent qui l’a écrit
- Ajoutez des tests pour verrouiller le comportement
- Documentez au fur et à mesure que vous comprenez
- Refactorisez progressivement vers quelque chose de plus clair
Peut-on faire confiance aux tests générés par IA ?
Vérifiez que les tests : - Testent vraiment ce qu’ils prétendent tester - Incluent des cas limites - Peuvent échouer (testez en cassant le code volontairement) - Sont maintenables
Ressources supplémentaires
Documentation officielle
Communauté
Outils mentionnés
Félicitations ! Vous avez terminé le guide. Bonne vibe coding ! 🎉
Comment savoir si du code a été généré par IA ?
Il n’y a pas de méthode infaillible. Indices possibles : - Style légèrement différent du reste du projet - Commentaires plus verbeux ou dans un style particulier - Patterns “corrects mais génériques”