Anaïs Sparesotto
Git · DébutantDébutant≈ 2h30 · 8 chapitres

Premiers pas avec Git et GitHub

Versionner ton code, collaborer sur GitHub, ouvrir une pull request : les bases solides pour démarrer sereinement, sans accumuler de mauvais réflexes.

À la fin du cours, tu sais

  • Installer et configurer Git en moins de 5 minutes
  • Versionner un projet en local avec des commits propres
  • Travailler avec des branches sans flipper
  • Pousser ton code sur GitHub avec une authentification sécurisée
  • Ouvrir une pull request et collaborer en équipe

Prérequis

  • Être à l'aise avec un terminal
  • Avoir un projet (même minimal) que tu peux versionner

Chapitre 1

Comprendre Git et GitHub

Avant de toucher au terminal, poser les bases. Git et GitHub sont deux outils différents, souvent confondus.

Git : le versionneur local

Git est un logiciel installé sur ta machine qui suit l'historique de tes fichiers. Il fonctionne sans internet. Chaque modification, chaque retour en arrière, chaque comparaison entre versions passe par Git.

GitHub : la plateforme de partage

GitHub est un service en ligne qui héberge des dépôts Git. C'est là que tu sauvegardes ton code, que tu collabores avec d'autres dev, que tu publies tes projets open source. Il y en a d'autres (GitLab, Bitbucket, Gitea), GitHub est le plus utilisé.

À retenir

Git fonctionne sans GitHub. GitHub ne sert à rien sans Git. Les deux sont indépendants mais font équipe au quotidien.

Le vocabulaire de base

  • Dépôt (repository, repo) : un projet versionné
  • Commit : une photo de ton projet à un instant T, avec un message qui décrit le changement
  • Branche (branch) : une ligne d'évolution indépendante du code
  • Remote : un dépôt distant (sur GitHub par exemple), connecté à ton dépôt local
git --version
# git version 2.45.0 ou plus récent

Chapitre 2

Installer et configurer Git

Configuration à faire une fois pour toutes. Cinq minutes, et tu n'y reviens plus.

Installation

  • macOS : brew install git (recommandé), ou via les Xcode Command Line Tools
  • Windows : télécharge Git for Windows sur git-scm.com
  • Linux : via le gestionnaire de paquets, ex sudo apt install git sur Ubuntu

Configurer ton identité

Chaque commit que tu fais est signé avec un nom et un email. À toi de les configurer une bonne fois pour toutes :

git config --global user.name "Prénom Nom"
git config --global user.email "ton.email@exemple.fr"

# Branche par défaut sur "main" pour tout nouveau projet
git config --global init.defaultBranch main

# Éditeur par défaut (VS Code dans cet exemple)
git config --global core.editor "code --wait"

# Vérifier la config
git config --list

L'option --global

Avec --global, la config s'applique à tous tes dépôts. Sans --global, elle ne vaut que pour le dépôt courant. Le 99 % du temps, tu veux --global.

Chapitre 3

Ton premier dépôt local

Créer un projet versionné, ajouter des fichiers, faire ton premier commit. Le cycle de base.

Les trois zones de Git

  • Working directory : ton dossier, où tu modifies les fichiers
  • Staging area (index) : la zone où tu prépares ce qui ira dans le prochain commit
  • Dépôt (repository) : l'historique des commits enregistrés

Le cycle de base : tu modifies → tu places dans le staging avec git add → tu enregistres avec git commit.

Les commandes essentielles

# Dans le dossier de ton projet
git init

# Voir l'état des fichiers en permanence
git status

# Ajouter un fichier au staging
git add README.md

# Tout ajouter (à utiliser avec un .gitignore propre)
git add .

# Enregistrer un commit avec un message clair
git commit -m "Init : structure du projet"

# Voir l'historique
git log --oneline

Le .gitignore : ce que Git ne doit pas suivre

Certains fichiers ne doivent jamais être versionnés : dépendances installées (node_modules), secrets (.env), artefacts de build (dist, build). Crée un fichier .gitignore à la racine :

.gitignore
node_modules/
.env
.env.local
dist/
build/
.DS_Store
*.log

Le piège du secret commité

Si tu commits un fichier .env avec une clé API par erreur, considère la clé comme compromise même si tu la supprimes dans un commit suivant. Git garde tout dans l'historique. Régénère-la immédiatement.

Chapitre 4

Travailler avec les branches

Une branche, c'est une ligne d'évolution indépendante. Tu codes ta nouvelle feature sans casser ce qui marche déjà sur main.

Pourquoi des branches

  • Isoler une nouvelle fonctionnalité du code stable
  • Travailler à plusieurs sans s'écraser
  • Pouvoir abandonner un essai sans bousiller main
  • Préparer une release pendant que le dev continue ailleurs

Les commandes

# Créer une branche et basculer dessus
git switch -c feat/page-contact

# Lister les branches (l'actuelle est marquée *)
git branch

# Basculer sur une branche existante
git switch main

# Fusionner une branche dans la branche courante
git merge feat/page-contact

# Supprimer une branche fusionnée
git branch -d feat/page-contact

Conventions de nommage

Préfixe tes branches par leur intention : feat/ pour une nouvelle feature, fix/ pour un bug, refactor/ pour une refonte, docs/ pour de la doc. Ça aide tout le monde à comprendre l'historique d'un coup d'œil.

git switch vs git checkout

Les vieux tutos utilisent git checkout pour changer de branche. Depuis Git 2.23, la commande dédiée est git switch, plus claire. checkout reste pour restaurer des fichiers. Préfère switch pour les branches.

Chapitre 5

Se connecter à GitHub

Créer un dépôt distant, relier ton dépôt local, t'authentifier proprement. Une étape qui bloque souvent les débutant·es à cause de l'auth.

Créer un dépôt sur GitHub

Sur github.com, clique New repository. Donne-lui un nom, laisse-le vide (pas de README, pas de .gitignore) pour pouvoir y pousser ton dépôt local sans conflit.

Authentification : token ou clé SSH

Plus de mot de passe en HTTPS

Depuis 2021, GitHub n'accepte plus le mot de passe pour s'authentifier en HTTPS. Tu as deux options : un Personal Access Token (PAT) ou une clé SSH. La clé SSH est plus pratique au quotidien.

Option recommandée : clé SSH

# Génère une clé SSH
ssh-keygen -t ed25519 -C "ton.email@exemple.fr"

# Affiche la clé publique pour la copier
cat ~/.ssh/id_ed25519.pub

Colle la clé publique sur GitHub : Settings → SSH and GPG keys → New SSH key. Ensuite, tu peux pousser sans jamais retaper de mot de passe.

Relier ton dépôt local

# Ajoute le remote (l'URL SSH du dépôt GitHub vide)
git remote add origin git@github.com:tonpseudo/mon-projet.git

# Pousse la branche main pour la première fois (-u : track)
git push -u origin main

Pourquoi -u

L'option -u (ou --set-upstream) lie ta branche locale à la branche distante. Après ça, un simple git push ou git pull sait où aller.

Chapitre 6

Collaborer : push, pull, clone

Le cycle quotidien quand tu bosses à plusieurs : récupérer ce qui a bougé, coder, pousser, recommencer.

Cloner un dépôt existant

git clone git@github.com:equipe/projet.git
cd projet

git clone récupère le dépôt complet : tout l'historique, toutes les branches, configurées automatiquement comme remote origin.

Le cycle pull → code → push

# Avant de coder : récupérer les changements des autres
git pull

# Tu codes, tu fais tes commits
git add .
git commit -m "feat: ajout du formulaire de contact"

# Tu pousses tes commits sur GitHub
git push

Toujours pull avant de pusher

Si ton·a collègue a poussé des changements et que tu pousses sans pull d'abord, Git refuse pour éviter d'écraser leur travail. Réflexe : git pull au début de chaque session de code.

Gérer un conflit

Un conflit arrive quand deux personnes ont modifié les mêmes lignes du même fichier. Git ne sait pas choisir. Il te demande de trancher.

Un fichier en conflit ressemble à ça
<<<<<<< HEAD
Texte de ta version locale
=======
Texte de la version distante
>>>>>>> origin/main

Ouvre le fichier, choisis la bonne version (ou fais un mélange), supprime les marqueurs <<<, ===, >>>, puis git add + git commit.

Chapitre 7

Pull requests et revue de code

La pull request (PR) est le rituel central de la collaboration sur GitHub : tu proposes un changement, on en discute, on le valide, on le fusionne.

Le flux complet

  1. Tu crées une branche dédiée : git switch -c fix/typo-readme
  2. Tu codes, tu commits
  3. Tu pousses ta branche : git push -u origin fix/typo-readme
  4. Sur GitHub, tu ouvres une Pull request avec un titre clair et une description du changement
  5. Tes coéquipier·es relisent, commentent, demandent des ajustements
  6. Tu pousses des commits supplémentaires sur la branche, la PR se met à jour automatiquement
  7. Une fois approuvée, tu cliques Merge pull request sur GitHub
  8. Tu supprimes la branche fusionnée (GitHub propose le bouton)

Squash, merge, rebase : quel bouton ?

  • Squash and merge (recommandé pour les équipes) : tous tes commits deviennent un seul commit propre sur main
  • Merge commit : garde tous tes commits + un commit de merge en plus
  • Rebase and merge : rejoue tes commits sur main sans commit de merge

Squash par défaut

Si tu hésites, squash. Tu obtiens un historique main propre, un commit par feature. Les détails de tes 12 commits intermédiaires (oups typo, fix lint...) restent dans la PR mais ne polluent pas l'historique principal.

Chapitre 8

Bonnes pratiques et dépannage

Adopter de bons réflexes dès le départ t'évite 80 % des problèmes Git classiques.

Des commits propres

  • Un commit = une intention claire (pas 12 sujets dans le même commit)
  • Message à l'impératif, court mais explicite : fix: gestion du null sur le formulaire de login
  • Commits fréquents : plus c'est petit, plus c'est facile à relire et à annuler
  • Conventions Conventional Commits (feat:, fix:, chore:...) facilitent les releases automatiques

Annuler proprement

# Annuler des modifs non commitées sur un fichier
git restore fichier.md

# Annuler un commit déjà poussé sur la branche partagée
# (crée un nouveau commit qui annule le précédent)
git revert <hash-du-commit>

# Modifier le dernier commit (avant push uniquement)
git commit --amend

git reset, à manier avec prudence

git reset --hard détruit définitivement les modifications. Tant que tu n'as pas pushé, ce n'est pas grave. Sur une branche partagée déjà poussée, n'utilise jamais reset --hard, utilise git revert à la place.

Lire l'historique

# Historique condensé avec graphe des branches
git log --oneline --graph --all

# Voir les changements d'un commit
git show <hash>

# Voir qui a modifié quoi sur un fichier
git blame fichier.md

Le réflexe ultime

git status est ton meilleur ami. À chaque doute, lance-le. Il te dit où tu en es, ce qui est en staging, ce qui est modifié, et te suggère même les commandes pour avancer.

🛠️ Exercice optionnel

Publier ton premier projet sur GitHub

Tu vas créer un mini-site portfolio (un seul fichier HTML suffit), le versionner localement, puis le publier sur GitHub via une pull request. C'est le rite de passage de tout·e dev.

Ta mission

  1. Crée un dossier mon-portfolio, initialise un dépôt Git avec main comme branche par défaut, configure ton identité Git si pas déjà fait.
  2. Ajoute un README.md et un index.html minimal, fais un premier commit "Init : structure du projet".
  3. Crée une branche feat/section-bio, ajoute une section bio dans index.html, commit avec un message clair.
  4. Reviens sur main, fusionne feat/section-bio, supprime la branche locale.
  5. Crée un dépôt vide sur GitHub, ajoute-le en remote, pousse main avec -u.
  6. Crée une branche feat/section-projets, code-la, pousse-la, ouvre une pull request sur GitHub, fusionne-la depuis l'interface.
  7. Vérifie en local : git pull doit récupérer le commit de merge créé sur GitHub.

Tu bloques ? Des indices, à dévoiler quand tu en as besoin.

Indice 1

Indice masqué.

Indice 2

Indice masqué.

Indice 3

Indice masqué.

✅ QCM de fin de cours

Teste tes acquis

10 questions, plusieurs réponses parfois possibles. Coche tout ce qui te semble juste, puis valide pour voir ton score et les explications.

  1. 1

    Quelle est la différence entre Git et GitHub ?

  2. 2

    Quelle commande crée un nouveau dépôt Git dans le dossier courant ?

  3. 3

    Comment configurer ton nom globalement pour tous tes commits ?

  4. 4

    À quoi sert git add ?

  5. 5

    Quelle est la branche par défaut recommandée aujourd'hui pour un nouveau projet ?

  6. 6

    Quelle commande récupère un dépôt distant et son historique en local ?

  7. 7

    Comment t'authentifier sur GitHub pour pousser en HTTPS aujourd'hui ?

  8. 8

    Que fait git pull ?

  9. 9

    Quel est l'intérêt principal d'une pull request ?

  10. 10

    Tu as poussé un commit avec un bug sur la branche partagée. Comment annuler proprement ?

Tu peux laisser des questions sans réponse, elles compteront comme fausses.

Tu veux ce cours pour ton équipe ?

Je peux adapter et animer ce cours pour tes formateur·ices ou tes apprenant·es, en présentiel ou en distanciel. Parlons-en pendant l'audit gratuit.

Réserver un audit gratuit →