← Git & GitHub : du premier commit au travail en équipe

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)

CommandeEffet
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)

CommandeEffetZone
git initTransforme le dossier courant en dépôt Gitcrée le repository
git statusLa boussole. Montre la zone de chaque fichier. Ne modifie jamais rien.toutes
git add <fichier>Prépare le fichier pour la prochaine photowdstaging
git commit -m "message"Prend la photo (permanente, locale)stagingrepo
git logFeuillette l’album des commits (quitter : q)repo

Inspecter les changements (leçon 2)

CommandeEffetCompare
git diffMontre les modifications pas encore en staging (lignes -/+)wdstaging
git diff --stagedMontre le contenu exact du prochain commitstagingdernier commit
git log --onelineHistorique compact : une ligne par commitrepo
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… »CommandeDanger
Modif ratée, pas encore de addgit restore <fichier>⚠️ détruit les modifs non commitées — git diff avant !
git add de tropgit 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 commitgit add … ; git commit --amend --no-editidem : 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)

Branches (leçon 4)

CommandeEffet
git branchListe 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 --graphCarte 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)

CommandeEffet
gh repo create <nom> --private --source=. --pushCrée le dépôt GitHub depuis le dossier courant et pousse
git remote -vListe les dépôts distants (origin = le principal)
git pushEnvoie tes commits locaux vers origin
git push -u origin <branche>Premier push d’une branche : la lie à sa jumelle distante
git pullRapatrie 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)

  1. git status → fichiers « both modified »
  2. Ouvrir le fichier : <<<<<<< HEAD (ta branche) / ======= / >>>>>>> autre-branche
  3. Éditer : choisir/combiner, supprimer les marqueurs
  4. git add <fichier> puis git 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

TermeDéfinition
dépôt (repository)Un projet suivi par Git : tes fichiers + tout leur historique (dans .git/)
commitUne 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
untrackedFichier présent dans le dossier mais que Git ne suit pas encore
diffComparaison ligne à ligne entre deux zones : - supprimé, + ajouté
brancheÉtiquette mobile posée sur un commit ; main = la branche principale
HEADL’étiquette qui indique où tu es (branche/commit courant)
mergeFusion : ramène les commits d’une branche dans la branche courante
fast-forwardFusion triviale : l’étiquette de la branche receveuse glisse simplement en avant
remote / originCopie du dépôt hébergée ailleurs (GitHub) ; origin = son nom conventionnel
push / pullEnvoyer ses commits vers le remote / rapatrier ceux du remote
cloneTé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 codeRelecture commentée du diff d’une PR avant merge
conflitLes mêmes lignes modifiées sur deux branches : l’humain tranche, pas Git