Commandes Git — antisèche
Le modèle des 3 zones
working directory ── git add ──▶ staging area ── git commit ──▶ repository
(tes fichiers édités) (la prochaine photo) (l'album permanent, .git/)
Configuration (une fois par machine)
| Commande | Effet |
|---|---|
git config --global user.name "Nom" | Nom qui signera tes commits |
git config --global user.email "..." | Email qui signera tes commits |
Cycle de base (leçon 1)
| Commande | Effet | Zone |
|---|---|---|
git init | Transforme le dossier courant en dépôt Git | crée le repository |
git status | La boussole. Montre la zone de chaque fichier. Ne modifie jamais rien. | toutes |
git add <fichier> | Prépare le fichier pour la prochaine photo | wd → staging |
git commit -m "message" | Prend la photo (permanente, locale) | staging → repo |
git log | Feuillette l’album des commits (quitter : q) | repo |
Inspecter les changements (leçon 2)
| Commande | Effet | Compare |
|---|---|---|
git diff | Montre les modifications pas encore en staging (lignes -/+) | wd ↔ staging |
git diff --staged | Montre le contenu exact du prochain commit | staging ↔ dernier commit |
git log --oneline | Historique compact : une ligne par commit | repo |
Piège : « git diff n’affiche rien après git add »
Rien n’est perdu — les changements ont juste changé de frontière. Utilise git diff --staged.
Annuler (leçon 3)
| « Oups… » | Commande | Danger |
|---|---|---|
Modif ratée, pas encore de add | git restore <fichier> | ⚠️ détruit les modifs non commitées — git diff avant ! |
git add de trop | git restore --staged <fichier> | sans risque : les modifs restent dans le wd |
| Message de commit raté | git commit --amend -m "..." | ok si le commit n’est pas partagé |
| Fichier oublié dans le commit | git add … ; git commit --amend --no-edit | idem : jamais sur un commit poussé |
Réflexes
Perdu ? git status suggère presque toujours la commande d’annulation exacte.
Catastrophe ? ohshitgit.com/fr.
Bon message de commit (leçon 2)
- Titre court (~50 caractères), à l’impératif : « Ajoute… », « Corrige… », « Supprime… »
- Test : le titre doit compléter « Si on applique ce commit, il va… »
- Le titre dit le quoi ; le pourquoi va dans le corps (après une ligne vide)
Branches (leçon 4)
| Commande | Effet |
|---|---|
git branch | Liste les branches ; * = où tu es |
git switch -c <nom> | Crée la branche et s’y place |
git switch <nom> | Change de branche (les fichiers du dossier suivent) |
git merge <nom> | Fusionne <nom> dans la branche courante — se placer d’abord sur celle qui reçoit |
git branch -d <nom> | Supprime une branche déjà fusionnée |
git log --oneline --all --graph | Carte du dépôt : toutes les branches, en graphe |
Règles d’équipe
Une tâche = une branche au nom clair. On ne travaille jamais directement sur main.
Merge « fast-forward » = main n’avait pas bougé, l’étiquette glisse ; sinon Git crée un commit de fusion.
GitHub : dépôts distants (leçon 5)
| Commande | Effet |
|---|---|
gh repo create <nom> --private --source=. --push | Crée le dépôt GitHub depuis le dossier courant et pousse |
git remote -v | Liste les dépôts distants (origin = le principal) |
git push | Envoie tes commits locaux vers origin |
git push -u origin <branche> | Premier push d’une branche : la lie à sa jumelle distante |
git pull | Rapatrie les commits d’origin dans ta branche |
git clone <url> | Télécharge un dépôt complet (fichiers + historique) et configure origin |
Pull requests (leçon 6)
git switch main && git pull # partir d'un main à jour
git switch -c ma-tache # une tâche = une branche
…add / commit… # messages impératifs, diff relu
git push -u origin ma-tache
gh pr create # ouvrir la PR (ou bandeau jaune sur GitHub)
# revue : commentaire → commit correctif → push (la PR se met à jour seule)
gh pr merge --merge --delete-branch
git switch main && git pull
Conflits de merge (leçon 7)
git status→ fichiers « both modified »- Ouvrir le fichier :
<<<<<<< HEAD(ta branche) /=======/>>>>>>> autre-branche - Éditer : choisir/combiner, supprimer les marqueurs
git add <fichier>puisgit commit
Sortie de secours : git merge --abort (retour à l’état d’avant le merge).
PR en conflit : git merge main dans sa branche, résoudre, push.
Vocabulaire
| Terme | Définition |
|---|---|
| dépôt (repository) | Un projet suivi par Git : tes fichiers + tout leur historique (dans .git/) |
| commit | Une photo permanente du projet à un instant donné, avec auteur, date et message |
| staging area (index) | La liste de ce qui entrera dans le prochain commit |
| untracked | Fichier présent dans le dossier mais que Git ne suit pas encore |
| diff | Comparaison ligne à ligne entre deux zones : - supprimé, + ajouté |
| branche | Étiquette mobile posée sur un commit ; main = la branche principale |
| HEAD | L’étiquette qui indique où tu es (branche/commit courant) |
| merge | Fusion : ramène les commits d’une branche dans la branche courante |
| fast-forward | Fusion triviale : l’étiquette de la branche receveuse glisse simplement en avant |
| remote / origin | Copie du dépôt hébergée ailleurs (GitHub) ; origin = son nom conventionnel |
| push / pull | Envoyer ses commits vers le remote / rapatrier ceux du remote |
| clone | Télécharger un dépôt distant complet, historique inclus |
| pull request (PR) | Page GitHub proposant de fusionner une branche, support de la revue de code |
| revue de code | Relecture commentée du diff d’une PR avant merge |
| conflit | Les mêmes lignes modifiées sur deux branches : l’humain tranche, pas Git |