Git
Git garde l'historique de ton projet. Chaque fois que tu arrives à une étape qui fonctionne, tu enregistres un commit : une photo de tes fichiers, avec un message qui dit ce que tu as fait. Tu peux ensuite revoir chaque étape, revenir en arrière, ou essayer une idée sur une branche sans abîmer ce qui marche.
CapyCode fait tout cela avec le vrai Git, dans ton navigateur, et par deux chemins : le panneau Contrôle de code source pour cliquer, le terminal pour taper les commandes. Les deux agissent sur le même dépôt : ce que tu fais d'un côté se voit aussitôt de l'autre.
Activer Git
Par défaut, pour garder une interface simple pour les débutants, Git est proposé sous forme d'une extension intégrée à installer. Pour l'utiliser, ouvre le panneau Extensions (icône de blocs dans la barre d'activité, ou Ctrl+Maj+X) et clique sur Installer. Le bouton Contrôle de code source apparaît aussitôt dans la barre d'activité. Dans certaines activités (sur Capytale, par exemple), l'enseignant peut également désactiver Git.
Le vocabulaire
| Mot | Sens |
|---|---|
| Dépôt | Le dossier caché .git qui contient tout l'historique du projet |
| Commit | Une version enregistrée du projet, avec son message, son auteur et sa date |
Indexer (git add) | Choisir les modifications qui entreront dans le prochain commit |
| Branche | Une ligne de développement ; main est la branche principale |
Fusionner (git merge) | Réunir dans la branche actuelle le travail d'une autre branche |
| Conflit | Deux branches ont modifié les mêmes lignes : c'est à toi de choisir |
Le panneau Contrôle de code source
Une fois l'extension activée, clique sur l'icône de branches dans la barre d'activité. Le projet de départ a déjà un dépôt ; sinon, le panneau propose de le créer (git init).

Les fichiers modifiés depuis le dernier commit sont rangés en deux listes :
- Modifications : ce que tu as changé, pas encore indexé ;
- Modifications indexées : ce qui entrera dans le prochain commit.
Au survol d'un fichier, des boutons permettent de l'indexer (+) ou de le désindexer (−), d'ouvrir le fichier, ou d'annuler ses modifications (après confirmation, le fichier revient à sa version du dernier commit). Les mêmes boutons, en face du titre de chaque liste, agissent sur tous les fichiers. Un clic sur le nom du fichier ouvre la comparaison de ses modifications.
Faire un commit
- Indexe les fichiers à enregistrer.
- Écris un message court qui dit ce que tu as fait (« Calcul de la moyenne », « Correction de la division par zéro »).
- Clique sur Valider (ou
Ctrl+Entréedans le champ du message).
Le commit apparaît dans l'historique, sous les listes. Ses auteur et adresse sont ceux de CapyCode (CapyCode <student@capycode.local>).
Voir les différences
La comparaison montre l'ancienne version et la nouvelle : lignes supprimées en rouge, ajoutées en vert. Deux présentations : en ligne ou côte à côte. Les boutons de la comparaison indexent ou désindexent le fichier, ou l'ouvrent dans l'éditeur.
On ouvre une comparaison depuis le panneau (clic sur un fichier modifié) ou depuis le graphe (clic sur un fichier d'un commit).
Le graphe Git
Graphe Git, dans la barre d'état (ou la commande Git : Graphe Git de la palette), ouvre l'historique complet dans un onglet : chaque point est un commit, chaque couleur une branche.

- Le champ Filtrer cherche un commit par son message, son auteur ou son identifiant ; la liste Branches n'en montre qu'une.
- Un clic sur un commit affiche son détail : auteur, date, identifiant complet (bouton Copier le SHA), parents, branches, et la liste des fichiers modifiés. Un clic sur un fichier ouvre ses modifications dans ce commit.
- Créer une branche crée une branche qui part de ce commit.
Les branches
La branche actuelle est affichée dans la barre d'état et dans l'invite du terminal. Un clic sur son nom, dans la barre d'état, ouvre le menu des branches : basculer sur une autre, ou créer une branche. Le panneau Git et la palette (Git : Basculer sur la branche…, Git : Créer une branche…) offrent les mêmes actions.
Basculer sur une branche remplace les fichiers du projet par ceux de cette branche : les fichiers ouverts se mettent à jour. Fais un commit de ton travail avant de changer de branche.
Fusionner
Pour réunir le travail d'une branche dans la branche actuelle : menu Fusionner dans main du panneau Git (sous l'historique), ou la palette (Git : Fusionner « idee » dans « main »), ou git merge idee dans le terminal. Ton travail doit être commité avant.
- Si la branche actuelle n'a pas bougé, la fusion est rapide (fast-forward) : elle avance simplement jusqu'au dernier commit de l'autre branche.
- Sinon, Git crée un commit de fusion, qui a deux parents.
- Si les deux branches ont modifié les mêmes lignes, il y a conflit.
Résoudre un conflit
Git ne choisit pas à ta place : il écrit les deux versions dans le fichier, entre des marqueurs.

- Entre
<<<<<<<et=======: la version actuelle, celle de ta branche (en vert). - Entre
=======et>>>>>>>: la version entrante, celle de la branche fusionnée (en bleu).
Au-dessus de chaque bloc, choisis Garder la version actuelle, Garder la version entrante ou Garder les deux. Tu peux aussi corriger le texte toi-même et effacer les marqueurs. Au clavier, ces choix sont des commandes de la palette (« Conflit : garder la version actuelle »…, « Conflit : aller au suivant »). Un choix s'annule avec Ctrl+Z.
Pendant la fusion, le haut du panneau Git rappelle les fichiers qui ont encore des conflits (un clic les ouvre) :

- Résous tous les blocs de chaque fichier, puis enregistre (
Ctrl+S). - Clique sur Terminer la fusion : CapyCode crée le commit de fusion.
Abandonner la fusion remet les fichiers dans leur état d'avant la fusion. Au terminal : git add fichier puis git commit (ou git merge --continue) pour terminer, git merge --abort pour abandonner.
Git dans le terminal
| Commande | Effet |
|---|---|
git init | Crée un dépôt vide |
git status, git status -s | État des fichiers |
git add fichier, git add . | Indexe un fichier, tout |
git restore fichier | Annule les modifications d'un fichier |
git restore --staged fichier, git reset | Désindexe |
git commit -m "message", git commit -a -m "…" | Fait un commit (-a : indexe d'abord les fichiers modifiés) |
git log, git log --oneline -n 5 | Historique |
git show, git show <commit> | Un commit et ses modifications |
git diff, git diff --staged | Modifications non indexées, indexées |
git branch, git branch nom, -d, -m | Liste, crée, supprime, renomme des branches |
git switch nom, git switch -c nom | Bascule sur une branche (-c : la crée) |
git checkout nom, git checkout -b nom, git checkout -- fichier | Ancienne syntaxe de switch et de restore |
git merge nom, --continue, --abort | Fusionne, termine, abandonne |
git tag, git tag nom, git tag -d nom | Étiquettes |
git --help affiche cette liste. Les messages suivent ceux du vrai Git, traduits.
Pas de dépôt distant
CapyCode n'a ni push, ni pull, ni clone : le dépôt reste dans ton navigateur. Pour le transmettre avec tout son historique, exporte le projet en ZIP ou partage-le par un lien qui inclut l'historique (voir Sauvegarder et partager).