Git & GitHub
Guide Étudiant
Comprendre les concepts fondamentaux, maîtriser les commandes essentielles et travailler efficacement avec VSCode et GitHub Classroom.
C'est quoi Git ?
Git est un système de contrôle de version : il enregistre l'historique complet de tes fichiers. Tu peux revenir à n'importe quel état passé, travailler sur plusieurs versions en parallèle (branches) et collaborer avec d'autres sans écraser leur travail.
Les 4 zones fondamentales de Git
que tu les vois
dans l'explorateur
git add
préparation du
prochain commit
git commit
commits sur
ton ordinateur
git push
par tous, sauvegarde
en ligne
inconnu de Git
git add
committé
git commit
l'historique
(édition)
le dernier commit
git add
Configuration initiale — à faire une seule fois
# 1. Ton nom (apparaîtra dans chaque commit)
$ git config --global user.name "Prénom Nom"
# 2. Ton email (doit correspondre à ton compte GitHub)
$ git config --global user.email "toi@etudiant.be"
# 3. Éditeur par défaut (optionnel, évite vim par défaut)
$ git config --global core.editor "code --wait"
# 4. Vérifier toute la config
$ git config --listWorkflow quotidien complet
# Option A — créer depuis zéro
$ mkdir mon-projet
$ cd mon-projet
$ git init
# Option B — cloner un dépôt existant
$ git clone https://github.com/user/repo.git
$ cd repo
# Toujours vérifier l'état au départ
$ git status# Voir ce qui a changé
$ git status
$ git diff # voir les lignes modifiées
# Stager les fichiers voulus
$ git add pokemon.py # fichier précis
$ git add . # TOUT ce qui a changé
# Committer avec un message clair
$ git commit -m "feat: ajoute méthode attaquer()"# Envoyer tes commits vers GitHub
$ git push
# Premier push d'une nouvelle branche
$ git push -u origin main
# Récupérer les modifications distantes
$ git pull
# Voir l'état par rapport au distant
$ git status
# → "Your branch is ahead of 'origin/main' by 1 commit"# Historique compact
$ git log --oneline
a3f9c1b feat: ajoute méthode attaquer()
7d2e04f init: structure de base du projet
# Historique avec branches visuelles
$ git log --oneline --graph --all
# Revenir à un commit précédent (lecture seule)
$ git checkout a3f9c1bBranches — travailler en parallèle
# Créer ET basculer (méthode moderne)
$ git switch -c feature/combat
# Lister toutes les branches
$ git branch
* feature/combat ← branche active
main
# Revenir sur main et fusionner
$ git switch main
$ git merge feature/combat
# Supprimer la branche une fois mergée
$ git branch -d feature/combatmain. Si ça ne fonctionne pas, tu supprimes simplement la branche.git add + git commit.Messages de commit — conventions et bonnes pratiques
# Structure : type(portée): description courte
feat: ajoute la classe Pokemon
fix: corrige le calcul des points de vie
refactor: renomme attaque en attaquer
docs: ajoute docstrings à la classe Arena
test: ajoute tests unitaires pour Pokemon
# ❌ À éviter absolument
git commit -m "modif"
git commit -m "ça marche"
git commit -m "wip"Le fichier .gitignore — ce qu'il ne faut pas committer
# Fichiers compilés Python
__pycache__/
*.py[cod]
*.pyo
# Environnements virtuels
venv/
.env/
env/
# Fichiers IDE
.vscode/settings.json
.idea/
# Système
.DS_Store # macOS
Thumbs.db # Windows
# Secrets — JAMAIS committer !
.env
secrets.py
*.keyRéférence complète des commandes
Erreurs courantes et comment les corriger
fatal: not a git repository (or any of the parent directories): .git# Vérifie où tu es
$ pwd
# Navigate vers le bon dossier, ou initialise
$ cd mon-projet
$ git init! [rejected] main -> main (non-fast-forward)
hint: Updates were rejected because the remote contains work that you do not have locally.# 1. Récupérer les changements distants d'abord
$ git pull
# 2. Résoudre les conflits éventuels
# 3. Puis pusher
$ git pushAuthor identity unknown
Please tell me who you are.
Run: git config --global user.email "you@example.com"$ git config --global user.email "toi@etudiant.be"
$ git config --global user.name "Prénom Nom"# Modifier le message du DERNIER commit
$ git commit --amend -m "feat: nouveau message correct"
# ⚠ Ne pas faire après un push !Le panneau Source Control natif
# Ouvrir Source Control
Ctrl + Shift + G # Windows/Linux
Cmd + Shift + G # macOS
# Terminal intégré
Ctrl + `
# Palette de commandes (tout faire)
Ctrl + Shift + P
→ taper "Git:" pour voir toutes les actions
# Changer de branche
→ cliquer sur le nom de branche en bas à gauchePanneau "Changes"
Liste tous les fichiers modifiés. Survole → clique + pour stager un fichier, ou +↑ en haut pour stager tout.
Zone de message
Tape ton message de commit dans le champ texte en haut du panneau Source Control.
Commit
Bouton ✓ Commit ou Ctrl+Enter dans la zone de message.
Sync / Push
Bouton ⟳ Sync Changes, ou icône ↑ dans la barre de statut en bas.
Indicateurs visuels dans l'éditeur
Extensions indispensables
GitLens — Git supercharged
L'extension Git la plus puissante : blame inline (qui a écrit quoi), timeline de fichier, comparaison de branches, historique détaillé. Indispensable.
eamodio.gitlensGit Graph
Affiche un graphe visuel interactif de toutes les branches et commits. Clique sur un commit pour voir ses détails et ses diffs. Très utile pour comprendre l'arbre Git.
mhutchie.git-graphGit History
Affiche l'historique d'un fichier ou d'une ligne précise. Clique droit sur du code → "Git: View File History". Parfait pour comprendre l'évolution d'un fichier.
donjayamanne.githistoryGitHub Pull Requests & Issues
Gère tes pull requests et issues GitHub sans quitter VSCode. Voir les commentaires de ton prof, répondre, consulter le feedback — tout depuis l'éditeur.
GitHub.vscode-pull-request-githubLive Share
Partage ta session VSCode en temps réel avec d'autres personnes. Idéal pour le pair programming ou pour montrer ton code à ton prof en direct.
MS-vsliveshare.vsliveshareError Lens
Affiche les erreurs et avertissements directement sur la ligne concernée, en rouge dans l'éditeur. Plus besoin de survoler pour voir le message d'erreur.
usernamehw.errorlensWorkflow Git complet dans VSCode
Cloner un dépôt
Ctrl+Shift+P → "Git: Clone" → colle l'URL GitHub → choisis un dossier → "Open" dans VSCode
Modifier des fichiers
Code normalement. Tu vois les lettres M (modified) apparaître dans l'explorateur et la pastille 🔵 dans Source Control.
Relire les diffs
Clique sur un fichier modifié dans Source Control → une vue côte-à-côte s'ouvre : rouge = supprimé, vert = ajouté.
Stager et committer
Clic + sur les fichiers → tape un message → Ctrl+Enter. C'est équivalent à git add . && git commit.
Synchroniser (Push)
Bouton ⟳ Sync Changes dans Source Control, ou clique sur ↑1 dans la barre de statut.
Problèmes courants dans VSCode
Solution : installe Git depuis git-scm.com, relance VSCode. Vérifie avec
git --version dans le terminal.Solution : clique sur "Publish Branch" — c'est normal pour une nouvelle branche, ça exécute
git push -u origin <branche>.Solution : clique d'abord sur + à côté des fichiers dans "Changes", puis committe.
Accepter un devoir — étape par étape
Reçois le lien d'invitation
Ton prof te partage une URL de type classroom.github.com/a/XXXXXXXX. Clique dessus.
Connecte-toi à GitHub
Si tu n'es pas connecté, GitHub te demandera de te connecter ou créer un compte. Utilise ton adresse étudiante pour accéder à GitHub Education.
Identifie-toi dans le roster
Cherche ton nom dans la liste de la classe et clique dessus. Important : ne clique pas sur le nom de quelqu'un d'autre — cela lierait le mauvais étudiant à ton compte !
Accepte le devoir
Clique "Accept this assignment". GitHub crée automatiquement un dépôt privé à ton nom : github.com/classe/devoir-tonnom
Attends la création
Patiente quelques secondes, puis clique sur le lien affiché pour accéder à ton dépôt personnel. Bookmark-le !
Cycle de travail complet
# Copie l'URL depuis le bouton vert "Code" sur GitHub
# (option HTTPS recommandée pour les débutants)
$ git clone https://github.com/classe/devoir-tonnom.git
$ cd devoir-tonnom
# Vérifier le contenu du dépôt
$ ls
$ cat README.md # lire les consignes !# Vérifie l'état avant de commencer
$ git status
# ... code, code, code ...
# Sauvegarde un point d'avancement
$ git add .
$ git commit -m "feat: implémente classe Pokemon"
$ git push
# Répète ce cycle à chaque étape logique# S'assurer que tout est committé
$ git status
On branch main
nothing to commit, working tree clean
# Pousser les derniers commits
$ git push
# Confirmer sur GitHub que tout est bien là
# → github.com/classe/devoir-tonnom → onglet Code
# → vérifier la date du dernier commitOnglet "Code"
Vérifie que tous tes fichiers sont présents et que la date du dernier commit est correcte.
Onglet "Actions" (Autograding)
Si ton prof a configuré des tests automatiques, tu verras ✅ (réussi) ou ❌ (échoué). Clique sur ❌ pour lire les logs d'erreur.
Onglet "Pull Requests" → Feedback
Ton prof peut laisser des commentaires de correction dans la PR "Feedback" automatiquement créée par Classroom.
Comprendre GitHub Actions (tests automatiques)
FAILED tests/test_pokemon.py::test_attaquer
AssertionError: assert 80 == 85
→ ton pokemon.attaquer() retourne 80, attendu 85
PASSED tests/test_pokemon.py::test_initialisation
PASSED tests/test_pokemon.py::test_soigner
2 passed, 1 failedProblèmes courants dans GitHub Classroom
# Vérifier l'URL du distant
$ git remote -v
# Doit afficher TON dépôt Classroom
# Installer GitHub CLI et se connecter
$ gh auth login
# Ou configurer un Personal Access Token (PAT)
# GitHub → Settings → Developer Settings → PATVérification : onglet Code → vérifie si ton commit récent apparaît. Si oui, attends 1 min et recharge Actions.
Vérification :
git log --oneline → compare avec ce que tu vois sur GitHub.$ git log --oneline
$ git status
# Si "Your branch is ahead of 'origin/main' by N commits"
$ git push # ← c'est ce qu'il faut faire