Skip to content
English

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 ​

MotSens
DépôtLe dossier caché .git qui contient tout l'historique du projet
CommitUne 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
BrancheUne ligne de développement ; main est la branche principale
Fusionner (git merge)Réunir dans la branche actuelle le travail d'une autre branche
ConflitDeux 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).

Le panneau : config.py indexé, brouillon.py modifié, et l'historique en dessous

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 ​

  1. Indexe les fichiers à enregistrer.
  2. Écris un message court qui dit ce que tu as fait (« Calcul de la moyenne », « Correction de la division par zéro »).
  3. Clique sur Valider (ou Ctrl+Entrée dans 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 graphe : la fusion de la branche rouge dans main, et le détail du commit sélectionné

  • 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.

Un conflit dans config.py : la version actuelle en vert, la version entrante en bleu, et les boutons au-dessus

  • 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) :

Le panneau Git pendant la fusion : un fichier a encore des conflits

  1. Résous tous les blocs de chaque fichier, puis enregistre (Ctrl+S).
  2. 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 ​

CommandeEffet
git initCré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 fichierAnnule les modifications d'un fichier
git restore --staged fichier, git resetDé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 5Historique
git show, git show <commit>Un commit et ses modifications
git diff, git diff --stagedModifications non indexées, indexées
git branch, git branch nom, -d, -mListe, crée, supprime, renomme des branches
git switch nom, git switch -c nomBascule sur une branche (-c : la crée)
git checkout nom, git checkout -b nom, git checkout -- fichierAncienne syntaxe de switch et de restore
git merge nom, --continue, --abortFusionne, 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).