diff --git a/src/cours/CIEL2/04-git/cours.md b/src/cours/CIEL2/04-git/cours.md new file mode 100644 index 0000000..a9bd7a2 --- /dev/null +++ b/src/cours/CIEL2/04-git/cours.md @@ -0,0 +1,7 @@ +# Git - Initiation + +## Qu'est-ce que git ? + +## Installation + +## Bases diff --git a/src/cours/CIEL2/04-git/tp.md b/src/cours/CIEL2/04-git/tp.md new file mode 100644 index 0000000..0d60a81 --- /dev/null +++ b/src/cours/CIEL2/04-git/tp.md @@ -0,0 +1,134 @@ +# TP - Découverte de Git + +## Objectifs du TP + +### Objectif pédagogique + +L'objectif de cette activité est de découvrir le logiciel de gestion de versions git pour tenter de comprendre son rôle et ses possibilités. + +- **Installer :** installer le logiciel sur vos machines +- **Dépôt :** créer un nouveau dépôt +- **Commit :** créer un ou plusieurs commits +- **Historique :** visualiser et manipuler l'historique + +### Objectif technique + +- Initialiser un projet de développement versionné + +## Étapes + +### 1 - Installation + +**Objectif :** Installer git + +```admonish travail +- Se rendre sur le site officiel de git et récupérer l'installateur : [Download for Windows](https://git-scm.com/downloads/win) +- Le lancer pour installer git + - Choisir VSCode comme éditeur par défaut + - Choisir de nommer vos branches par défaut `main` au lieu de laisser git décider + - Choisissez l'option `Only-ever fast-forward` comme comportement par défaut pour le `git pull` + - Utiliser les options par défaut pour le reste +``` + +```admonish note title="Dans le compte rendu" +1. Grâce à la [documentation](https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control) et vos recherches, essayer de résumer (en 2-3 lignes maximum) ce que fait git. Dites ce que vous comprenez de la notion de Version Control System. +``` + +### 2 - Création d'un nouveau dépôt + +**Objectif :** Créer un nouveau dépôt + +```admonish travail +1. Créer un nouveau répertoire vide dans votre espace personnel +2. L'ouvrir avec VSCode +3. Dans VSCode ouvrir un terminal et taper la commande `git init` +4. Ouvrir votre répertoire dans l'explorateur Windows et afficher les éléments masqués pour voir le répertoire caché qui s'y trouve (ou dans le terminal tapez `dir -force`) +``` + +```admonish note title="Dans le compte rendu" +1. Grâce à la [documentation](https://git-scm.com/docs/git-init), dites en quelques mots ce que fait la commande `git init` +1. Quel est le nom du répertoire caché que git crée ? +1. Qu'est-ce qu'un dépôt git ? +``` + +### 3 - Un premier commit + +**Objectif :** Créer un premier commit + +```admonish travail +1. Commencer par donner quelques informations à git pour signer le travail. + - tapez `git config --global user.email "you@example.com` (en adaptant) + - tapez `git config --global user.name "Your name"` (en adaptant) +1. Créer ensuite un fichier `README.md`, et dans ce fichier taper une rapide description (de votre choix) +1. Taper maintenant `git status` et constatez que git a détecté votre fichier, qui est marqué comme `Untracked file` +1. À l'aide de la documentation de `git add`, demander à git de tracer votre fichier. Lorsque vous aurez réussi, la commande `git status` vous affichera le nom du fichier en vert précédé de `new file:`. +1. Tapez ensuite `git commit`. VSCode devrait ouvrir un onglet `COMMIT_EDITMSG`. Tapez un commentaire **sur la première ligne** pour décrire votre commit (par exemple `Commit initial avec README`). Sauvegardez le fichier et fermez l'onglet. La commande devrait se terminer avec succès dans le terminal. +``` + +```admonish note title="Dans le compte rendu" +1. A l'aide de la [documentation](https://git-scm.com/docs), dites en quelques lignes ce que font les commandes suivantes + - `git add` + - `git status` + - `git commit` +1. Essayez de décrire ce qu'est un "commit" +``` + +### 4 - Ajouter des modifications + +**Objectif :** Se repérer dans les étapes de validation d'une modification + +```admonish travail +1. Taper la commande `git log`. Vous devriez y voir votre commit. Prêter attention aux différentes informations qui s'affichent. +2. Faites une modification quelconque dans votre fichier `README.md`, sauvegardez-la, puis tapez `git status` dans le terminal. Constatez que git a pris en compte la modification du fichier (mais ne l'a pas enregistrée). +3. Tapez `git diff` et observez la sortie de la commande. +4. Utilisez la commande `git add -u` après avoir vérifié ce que fait l'option -u dans la [documentation](https://git-scm.com/docs/git-add#Documentation/git-add.txt--u). +5. Vérifiez de nouveau ce que vous renvoient `git status`, `git diff` et `git log`. +6. Effectuez un commit à l'aide de `git commit`. Choisissez un message vous permettant de distinguer votre nouveau commit du précédent. Puis réeffectuez les commandes `git status`, `git diff` et `git log`. +``` + +```admonish note title="Dans le compte rendu" +1. Observer la sortie de la commande `git log`. Quelles informations sont affichées ? Dans quel ordre semblent être affichés les commit ? +1. Que semble faire la commande `git diff` ? +1. Quelles sont les étapes nécessaires pour enregistrer une modification sur un fichier dans git ? Quel est l'intérêt de ce découpage selon vous ? +``` + +### 5 - Manipuler l'historique + +**Objectif :** Manipuler l'historique de votre dépôt pour annuler des modifications + +```admonish travail +1. Tapez la commande `git diff HEAD^1` +1. Effectuez une nouvelle modification dans votre fichier `README.md` et sauvegardez. Tapez `git status` et lisez bien le résultat de la commande. Essayez, au regard de votre lecture, d'annuler vos modifications. +1. Observez le résultat de la commande `git log`, puis lancez `git reset HEAD^1`. Effectuez ensuite les vérifications habituelles : `git diff`, `git status` et `git log`. +1. Effectuez un commit pour réenregistrer les modifications. +``` + +```admonish note title="Dans le compte rendu" +1. Quel est l'intérêt de la commande `git restore` ? +1. Que semble faire la commande `git diff HEAD^1` ? et `git reset HEAD^1` ? Concluez sur la signification de `HEAD^1` +``` + +### 6 - Etiqueter un commit + +**Objectif :** Comprendre la notion d'étiquette (ou tag) + +```admonish travail +1. A l'aide de `git log`, relever le hash (identifiant) d'un ancien commit (autre que votre dernier commit) +1. Créer une étiquette `my_tag` sur ce commit en vous aidant de la [documentation de `git tag`](https://git-scm.com/docs/git-tag). Pour identifier un commit vous pouvez utiliser le hash relevé précédemment. +1. Repérez le tag dans l'historique avec `git log`. +1. Tapez la commande `git switch --detach my_tag`. Réaffichez le log. +1. Revenez en arrière à l'aide de `git switch -` +``` + +```admonish note title="Dans le compte rendu" +1. Que semble faire la commande `git switch` ? Quel est l'intérêt ? +1. Qu'est-ce qu'un tag git selon vous ? A quoi cela peut servir ? Aidez vous de la [documentation](https://git-scm.com/book/en/v2/Git-Basics-Tagging) et/ou de vos recherches +``` + +## Ressources supplémentaires + +- [Git book](https://git-scm.com/book/en/v2) +- [Git doc](https://git-scm.com/doc) +- [Git videos](https://git-scm.com/videos) + +