ICS3U

Accueil > Programmer avec Java > Préprarer l’environnement de développement >

🛠️ Partager le code avec Git et GitHub

Survol et attentes

Définitions
Dépôts
(“repos” en anglais) Les projets gérés avec Git sont appelés dépôts. Un dépôt est un dossier qui contient tous les fichiers de votre projet, y compris les fichiers de configuration de Git. Les dépôts sont stockés sur votre ordinateur et peuvent être partagés avec d’autres personnes sur GitHub. Les dépôts sur votre ordinateur s’appellent des dépôts locaux, tandis que ceux sur GitHub sont des dépôts distants.
Clôner
Pour copier un dépôt distant sur votre ordinateur, vous devez le clôner. Cela crée une copie locale du dépôt sur votre ordinateur. Vous pouvez ensuite travailler sur le projet localement et synchroniser les changements avec le dépôt distant.
Modifier
selon Git un fichier modifié a été soit édité, ajouté ou supprimé depuis la dernière version validée. Ces modifications existent sur votre disque dur, mais ne sont pas encore enregistrées dans Git. Git vous permet de supprimer les modifications depuis la dernière validation, au besoin, ce qui affectent les fichiers sur votre disque dur.
Indexer
(“stage” en anglais) indexer les modifications est comme un photographe qui choisit son sujet. Vous sélectionnez les fichiers modifiés que vous voulez inclure dans votre prochain instantané. Vous ne pouvez pas prendre une photo sans un sujet, et vous ne pouvez pas faire une validation sans avoir indexé au moins une modification.
Valider
(“commit” en anglais) toujours dans le contexte de la photographie, valider est comme prendre une photo. Vous créez un instantané de votre projet à un moment donné. Vous pouvez revenir à cet instantané à tout moment pour voir ce à quoi ressemblait votre projet à ce moment-là.

Il faut toujours identifier un commit avec un court message; il n’est pas possible de compléter l’opération sans ce message.

Synchroniser
(“sync” en anglais) synchroniser un dépôt veut dire combiner et mettre à jour les validations du dépôt local et du dépôt distant. Toutes les validations qui ne sont pas communes seront partagées. Ainsi, une synchronisation poussera les validations locales vers le dépôt distant et tirera les validations distantes dans votre dépôt local.

Cette opération peut générer des conflits de fusion des validations. Si cela se produit, demandez de l’aide à votre enseignant.

Objectifs d’apprentissage

À la fin de cette leçon vous devrez être en mesure de :

Critères de succès

Clôner un projet partagé via GitHub

Votre enseignant vous prépare des gabarits de projets, parfois juste des dossiers vides, pour organiser vos programmes dans le cours. Pour les utiliser, vous devez les clôner dans votre ordinateur. Voici comment faire :

  • Acceptez d’abord la tâche dans GitHub Classroom, ce qui vous créera une copie personnelle du projet sur GitHub.
  • Ouvrez VS Code.
  • Ouvrez la palette de commandes avec Ctrl + Shift + P.
  • Tapez “clone” pour trouver la commande Git: Clone et cliquez dessus. Si vous l’avez déjà utilisée, elle apparaîtra dans la liste des commandes récentes sans avoir à la chercher.

    Si c’est la première connexion, VS Code vous demandera de vous connecter à GitHub. Suivez ATTENTIVEMENT les instructions pour vous connecter. Si on vous propose une option “toujours…”, cochez-la pour éviter des problèmes de connexion à l’avenir.

    À SURVEILLER : Parfois la fenêtre pour une des étapes d’authentification apparaît en arrière-plan, bloquant la connexion. Regarder la barre des tâches pour voir s’il y a des nouvelles fenêtres ouvertes.

  • Cliquez ensuite sur Clone from GitHub et attendre que la liste des dépôts apparaisse. Puisque vous n’en avez pas beaucoup, votre dépôt sera facile à trouver dans la liste.
  • Cliquez sur le dépôt que vous voulez clôner et choisissez un dossier où le clôner dans la fenêtre qui s’ouvre. Je suggère fortement d’utiliser votre dossier “Documents” pour tous les projets.
  • VS Code créera un dossier avec le nom du dépôt à cet endroit et copiera le projet dedans.
  • VS Code vous proposera d’ouvrir le dossier clôné avec les options suivantes :
    • Open : ferme le projet ouvert actuellement et ouvre le projet clôné
    • Open in New Window : ouvre le projet clôné dans une nouvelle fenêtre de VS Code (gardant le projet actuellement ouvert dans la fenêtre originale)
    • Add to Workspace : ajoute le projet clôné à la liste des dossiers actuellement ouverts dans VS Code (utile si vous avez plusieurs projets ouverts en même temps)

      En général, les options Open ou Open in New Window sont les plus simples à gérer.

Clônez une seule fois, synchronisez par la suite

Si vous avez déjà clôné un projet, vous n’avez pas besoin de le clôner à nouveau pour continuez à travailler dedans. Vous pouvez simplement ouvrir le dossier du projet dans VS Code. Il y a même une section “Open Recent” dans le menu “File” pour vous aider à retrouver les projets que vous avez ouverts récemment.

Testez votre compréhension

Clônez le projet “pratique” dans votre dossier “Documents” et ouvrez-le dans VS Code. Le lien pour le gabarit de ce projet est partagé avec vous dans Classroom.

Modifier, indexer et valider des fichiers dans un dépôt local

Cette section vous montre comment apporter des changements dans votre dépôt local, les conserver avec Git et les partager avec le dépôt distant, sur GitHub.

Modifier

Cette étape est la partie normale de la production de code : vous créez, modifiez et supprimez des fichiers en faisant vos exercices ou en développant vos programmes. Assurez-vous de travailler dans un dossier de projet et non sur des fichiers isolés. Seulement les fichiers dans un dépôt local - comme ceux que vous clônés de GitHub - peuvent être indexés et validés. Les dépôts locaux sont tous des dossiers.

Vous savez que vous faites des modifications dans un dépôt local si vous voyez un “M” à côté des noms des fichiers modifiés ou un “U” (pour “Untracked”) pour les fichiers que vous venez de créer. Si vous faites des modifications et vous ne voyez pas ces indicateurs, il y a deux possibilités : vous n’avez pas enregistré les fichiers sur le disque (activez l’enregistrement automatique) ou les fichiers ne sont pas dans un dépôt (utiliser l’Explorateur de fichiers Windows pour les déplacer dans votre dépôt).

De plus, vous devrez utiliser les outils de travail (les extensions Java, le terminal intégré, etc.) pour vous aider à écrire du code Java valide et fonctionnel. La leçon précédente sur VS Code vous explique davantage ces outils. En d’autres mots, vous devrez tester votre code avant de passer aux prochaines étapes.

Indexer et valider

En plus des indicateurs de modification mentionnés plus haut, vous pouvez voir le nombre de fichiers modifiés sur l’icône de l’outil Git dans la barre latérale de VS Code. Vous pouvez seulement indexer et valider des fichiers modifiés, alors vous pouvez seulement passer à cette étape quand il y a un nombre affiché.

Ces étapes peuvent se faire au terminal - et vous avez beaucoup plus de possibilités au terminal - mais VS Code vous offre une interface graphique pour les faire, ce qui est plus convivial. Voici comment l’utiliser :

  • Cliquez sur l’icône “Source Control” dans la barre latérale de VS Code ou en tapant Ctrl + Shift + G (“G” pour “Git”).
  • Les fichiers modifiés apparaîtront dans la liste “Changes”. Ce sont tout les fichiers qu’il est possible d’indexer.

    Vous pouvez cliquer sur un fichier pour voir les modifications qu’il contient. Les lignes en vert sont les ajouts, les lignes en rouge sont les suppressions.

  • Pour indexer un fichier, cliquez sur le + à côté du nom du fichier. Cela ajoutera le fichier à la liste des fichiers indexés. Vous pouvez indexer tous les fichiers en cliquant sur le + en haut de la liste (à côté de “Changes”). Les fichiers indexés sont les sujets de l’instantané que vous allez prendre en validant les modifications.
  • Écrire un message qui décrit les modifications indexées. Il est impossible de compléter la validation sans ce message. Il y a une zone de texte en haut du panneau de contrôle pour taper ce message. Voici quelques exemples de messages courts et descriptif :
    • Salut.java et capture pour l’exercice 1
    • ajout de commentaires pour l’exercice 2
    • progession sur Projet.java
    • correction d’erreurs dans Main.java
  • Valider les modifications indexées en cliquant sur le bouton “Commit” (le bouton avec la coche). Cela prend un instantané des modifications indexées. Ces modifications sont maintenant enregistrées dans Git, mais seulement sur votre ordinateur dans le dépôt local.

    Si vous oubliez d’écrire un message, VS Code bloque l’opération et ouvre un éditeur de message à la droite. Écrivez votre message sur une ligne qui ne commence pas par # (qui est un commentaire) et fermez l’éditeur (en l’enregistrant au besoin). La validation se complétera automatiquement.

Testez votre compréhension

Modifiez le fichier “README.md” dans le projet “pratique” : ajouter une ligne vide ou supprimez quelque chose. Indexez et validez le fichier avec un message descriptif.

Visitez votre dépôt sur GitHub pour voir que les modification n’ont pas été partagées. Rafraîchissez la page pour être certain. Ces étapes ont seulement créé une version qui peut être partagée avec un dépôt distant. Il faut faire la synchronisation pour partager cette version.

Synchroniser les changements avec le dépôt distant

Valider et synchroniser du code est comme la photographie. Un cliché se trouve d’abord juste sur l’appareil du photographe. Pour les partager avec le monde, le photographe doit les téléverser sur une plateforme de partage, comme un réseau social.

Partager des instantanés de code est pareil. La validation enregistre l’instantané sur votre ordinateur mais vous devez encore le téléverser sur le dépôt distant (GitHub), soit le synchroniser avec ce dépôt. Voici comment faire :

  • Après la validation, le bouton “Commit” devient “Sync Changes” avec le nombre de validations à pousser. S’il y a aussi des validations sur le dépôt distant qui ne sont pas sur votre ordinateur, le bouton affichera le nombre de validations à tirer.
  • Pour synchroniser, il suffit de cliquer sur le bouton.

Bonnes habitudes pour éviter les conflits de fusion

Pour éviter d’avoir à fusionner les validations à tirer avec les validations à pousser, vous devrez suivre ces règles d’or : toujours synchroniser (tirer) avant de commencer à travailler sur un projet et toujours synchroniser avant de fermer l’ordinateur. De cette façon, tout ce qui est à tirer arrive seul au début d’une session de travail, laissant seulement les modifications à pousser à la fin de la session de travail. De plus, vous commencerez toujours votre session avec la version la plus à jour du projet.

Après votre première synchronisation, VS Code vous demandera si vous voulez tirer périodiquement les modifications distantes. Je vous recommande de le faire (ce qui inclut une synchronisation chaque fois que vous ouvrez le projet), mais vous pouvez choisir de le faire manuellement si vous préférez afin de développer la discipline de synchroniser avant de travailler.

Vous devrez tout de même développer la discipline de synchroniser à la fin des périodes de travail.

Quand vous travaillerez en équipes (l’année prochaine), il y a des stratégies plus avancées pour éviter les conflits de fusion - notamment l’utilisation de branches, mais pour vos projets personnels, cette règle est suffisante et efficace.

Testez votre compréhension

Synchronisez les modifications du projet “pratique” avec le dépôt distant. Visitez votre dépôt sur GitHub pour voir que les modifications ont été partagées. Rafraîchissez la page au besoin.