Ajoute Git TP 2 - Branches
This commit is contained in:
parent
91450ba15c
commit
6c9333ce07
1 changed files with 54 additions and 102 deletions
|
|
@ -4,143 +4,95 @@
|
||||||
|
|
||||||
### Ce que vous allez faire
|
### Ce que vous allez faire
|
||||||
|
|
||||||
- Faire évoluer votre projet "Générateur de mots de passe"
|
- Vous allez cloner une version complète du projet générateur de mots de passe pour y ajouter une fonctionnalité
|
||||||
|
|
||||||
### Ce que vous allez apprendre
|
### Ce que vous allez apprendre
|
||||||
|
|
||||||
- Manipuler les branches
|
- Manipuler les branches
|
||||||
- Travailler avec un dépôt distant
|
- Travailler avec un dépôt distant
|
||||||
|
- Faire une Merge Request
|
||||||
|
- Gérer des conflits de fusion
|
||||||
|
|
||||||
## Étapes
|
## Étapes
|
||||||
|
|
||||||
### 1 – Installation
|
### 0 – Préparation
|
||||||
|
|
||||||
**Objectif :** Installer git
|
**Objectif :** Créer un compte Gitlab
|
||||||
|
|
||||||
```admonish travail
|
```admonish travail
|
||||||
1. Aller sur le site officiel de git et télécharger l’installateur : [Download for Windows](https://git-scm.com/downloads/win)
|
1. Rendez-vous sur [Gitlab](https://gitlab.com) et créez un nouveau compte (ou connectez-vous si vous en avez un).
|
||||||
1. Lancer l’installateur pour installer git
|
1. Donnez votre nom d'utilisateur et/ou mail à votre professeur pour qu'il vous ajoute au projet
|
||||||
1. Choisir VSCode comme éditeur par défaut
|
1. Une fois ajouté, rendez-vous sur : [pwd-generator](https://gitlab.com/afourmaux-edu-ufa-b2/pwd-generator)
|
||||||
1. Choisir l'option pour nommer les branches principales `main`
|
1. Trouvez l'URL pour cloner avec HTTPS
|
||||||
1. Choisir l’option `Only-ever fast-forward` comme comportement par défaut pour le `git pull`
|
1. Ouvrez un nouveau répertoire dans Visual Studio Code, puis un terminal
|
||||||
1. Garder les options par défaut pour le reste
|
1. Tapez la commande `git clone <url> .` en remplaçant l'url par celle trouvée plus haut. Git devrait vous demander vos identifiants.
|
||||||
```
|
```
|
||||||
|
|
||||||
```admonish note title="Dans le compte rendu"
|
```admonish note title="Dans le compte rendu"
|
||||||
1. Résumer en 2 ou 3 phrases ce que fait git, grâce à la [documentation](https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control).
|
- Rien à écrire
|
||||||
1. Expliquer ce qu’est un système de gestion des versions.
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 2 – Créer un nouveau dépôt
|
### 1 – Manipulation de branches
|
||||||
|
|
||||||
**Objectif :** Créer un dépôt git
|
**Objectif :** Créer une branche de fonctionnalité
|
||||||
|
|
||||||
```admonish travail
|
```admonish travail
|
||||||
1. Créer un dossier vide dans votre espace personnel
|
1. Aidez-vous de la [documentation](https://git-scm.com/docs/git-branch) pour
|
||||||
1. Ouvrir ce dossier avec VSCode
|
- Lister ***toutes*** les branches existantes
|
||||||
1. Ouvrir le terminal dans VSCode et taper la commande `git init`
|
- Créer une branche nommée `votre_prenom_tp_branches`
|
||||||
1. Ouvrir le dossier dans l’explorateur Windows et afficher les fichiers cachés pour voir le dossier caché créé par git (ou utiliser la commande `dir -force` dans le terminal)
|
- Basculer sur la branche `votre_prenom_tp_branches`
|
||||||
|
2. Ajoutez un nouveau fichier à votre nom dans le dépôt.
|
||||||
|
3. Faites un commit (n'oubliez pas d'ajouter votre modification) pour valider votre changement
|
||||||
|
4. Tentez de faire `git push`. À l'aide du résultat de la commande, corrigez votre commande pour pousser votre branche sur le dépôt distant.
|
||||||
```
|
```
|
||||||
|
|
||||||
```admonish note title="Dans le compte rendu"
|
```admonish note title="Dans le compte rendu"
|
||||||
1. Expliquer ce que fait la commande `git init`, grâce à la [documentation](https://git-scm.com/docs/git-init)
|
1. Quelles branches existent ?
|
||||||
1. Indiquer le nom du dossier caché créé par git
|
1. Expliquez les commandes utilisées
|
||||||
1. Expliquer ce qu’est un dépôt git
|
1. Que sont les branches dont le nom commence par `remotes/origin` ?
|
||||||
|
1. Quelle est la différence entre `remotes/origin/develop` et `develop` ?
|
||||||
```
|
```
|
||||||
|
|
||||||
### 3 – Faire un premier commit
|
### 2 – Merge request
|
||||||
|
|
||||||
**Objectif :** Créer un commit
|
**Objectif :** Créer une merge request
|
||||||
|
|
||||||
```admonish travail
|
```admonish travail
|
||||||
1. Configurer git avec votre email et votre nom pour signer le travail :
|
1. Allez sur la page web du projet et trouvez la liste des branches. Vérifiez que votre branche y soit.
|
||||||
- Taper `git config --global user.email "votre email"`
|
1. Trouvez le menu des requêtes de fusion, et créez une requête de fusion pour merger votre branche (source) dans `develop` (cible)
|
||||||
- Taper `git config --global user.name "Votre nom"`
|
1. Dans le menu de création, assignez-vous la requête, et assignez la relecture à un.e de vos camarades. Attendez son commentaire et son approbation (lire la suite).
|
||||||
1. Copier le fichier `main.py` fourni dans votre dossier de travail
|
1. Lorsque que quelqu'un vous aura assigné une relecture, allez voir sa merge request et déposez un commentaire.
|
||||||
1. Taper `git status` pour voir que git a détecté le nouveau fichier comme non suivi ("Untracked file")
|
1. Attendez une réponse, résolvez le commentaire et approuvez sa Merge Request (MR)
|
||||||
1. Utiliser `git add` pour demander à git de suivre ce fichier. Vérifier le résultat avec `git status` (le fichier doit apparaître en vert)
|
1. Lorsqu'on aura approuvé votre MR, mergez-la.
|
||||||
1. Taper `git commit` pour enregistrer vos changements
|
1. Sur votre poste, basculez sur `develop` et utilisez `git pull` pour récupérer les mises à jour. Vérifiez que votre commit a été mergé.
|
||||||
- Écrire un commentaire court sur la première ligne (exemple : `Ajoute le programme principal`)
|
|
||||||
- Enregistrer et fermer l’éditeur quand c’est terminé
|
|
||||||
```
|
```
|
||||||
|
|
||||||
```admonish note title="Dans le compte rendu"
|
```admonish note title="Dans le compte rendu"
|
||||||
1. Expliquer ce que font les commandes suivantes en quelques lignes, grâce à la [documentation](https://git-scm.com/docs) :
|
1. Expliquez ce qu'est une merge request (ou pull request sur Github)
|
||||||
- `git add`
|
2. Expliquez l'interêt des merge request dans le cadre d'un gros projet
|
||||||
- `git status`
|
|
||||||
- `git commit`
|
|
||||||
1. Expliquer ce que représente un "commit"
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 4 – Ajouter des modifications
|
### 3 – Gestion de conflits
|
||||||
|
|
||||||
**Objectif :** Enregistrer une modification avec git
|
**Objectif :** Apprendre à gérer des conflits de fusion
|
||||||
|
|
||||||
```admonish travail
|
```admonish travail
|
||||||
1. Taper la commande `git log` pour voir l’historique
|
1. Créez une nouvelle branche et basculez dessus.
|
||||||
1. Copier le code du bloc `À copier` en dessous et l'ajouter dans la fonction `afficher_menu` de `main.py`
|
2. Ajoutez votre prénom dans la section `Contributrices et contributeurs` du `README.md`
|
||||||
1. Enregistrer, puis taper `git status` pour voir le changement
|
3. Faites un commit (n'oubliez pas d'ajouter votre modification) pour valider votre changement
|
||||||
1. Taper `git diff` pour observer la différence
|
4. Tentez de faire `git push`. À l'aide du résultat de la commande, corrigez votre commande pour pousser votre branche sur le dépôt distant.
|
||||||
1. Utiliser la commande `git add -u` après avoir lu la [documentation](https://git-scm.com/docs/git-add#Documentation/git-add.txt--u) sur l’option -u
|
5. Créez une MR. Attendez (dans le calme et la discipline) qu'un camarade en soit au même point.
|
||||||
1. Vérifier le résultat avec les commandes `git status`, `git diff`, `git log`
|
6. Mergez votre branche ou celle de votre camarade, puis tentez de merger l'autre. Travaillez à deux pour cette partie.
|
||||||
1. Faire un commit avec `git commit`, écrire un message pour reconnaître ce nouveau commit, puis re-vérifier l’état avec les commandes déjà utilisées
|
7. Comme tout le monde va modifier le même fichier, il risque d'y avoir des conflits de fusion. Si cela se produit, il faudra les résoudre. Pour ça :
|
||||||
|
- Récupérez les changements dans votre espace de travail (`git pull`)
|
||||||
|
- La commande échouera probablement. Vous devrez alors effectuer `git pull --rebase`
|
||||||
|
- Vous aurez peut-être à gérer le conflit de fusion localement. N'hésitez pas à demander de l'aide.
|
||||||
|
- Communiquez entre vous pour définir un ordre de fusion et résoudre les conflits.
|
||||||
```
|
```
|
||||||
|
|
||||||
```admonish abstract title="À copier"
|
```admonish warning title="Important"
|
||||||
~~~python
|
Cette partie peut être chaotique : tout le monde travaille sur le même fichier et tente de merger en même temps ou presque. C'est voulu, et cela montre l'intérêt de s'organiser lors du travail en projet pour :
|
||||||
print("Quel type de mot de passe souhaitez-vous créer ?")
|
- architecturer correctement le code afin de segmenter les problèmes
|
||||||
print("1 - Mot de passe avec configuration par défaut")
|
- bien se répartir les tâches pour ne pas travailler tous en même temps sur les mêmes portions de code
|
||||||
print("2 - Mot de passe avec configuration personnalisée")
|
- savoir s'organiser lorsque cela est inévitable
|
||||||
print("3 - Phrase de passe avec configuration par défaut")
|
|
||||||
print("4 - Phrase de passe avec configuration personnalisée")
|
|
||||||
print("0 - Quitter\n")
|
|
||||||
~~~
|
|
||||||
```
|
```
|
||||||
|
|
||||||
```admonish note title="Dans le compte rendu"
|
|
||||||
1. Quel message de commit avez-vous mis ?
|
|
||||||
1. Quand vous tapez `git log`, quelles informations s’affichent ? Dans quel ordre ?
|
|
||||||
1. Expliquer ce que fait la commande `git diff`
|
|
||||||
1. Lister les étapes pour enregistrer une modification dans git. Expliquer pourquoi ces étapes sont séparées
|
|
||||||
```
|
|
||||||
|
|
||||||
### 5 – Manipuler l’historique
|
|
||||||
|
|
||||||
**Objectif :** Annuler ou restaurer des modifications
|
|
||||||
|
|
||||||
```admonish travail
|
|
||||||
1. Taper la commande `git diff HEAD^1` pour comparer les changements
|
|
||||||
1. Modifier votre fichier `main.py`, enregistrer, taper `git status` et tenter d’annuler la modification (indice: la commande à taper est donnée par `git status`)
|
|
||||||
1. Regarder la sortie de la commande `git log`
|
|
||||||
1. Taper `git reset HEAD^1` puis vérifier avec les commandes `git diff`, `git status`, `git log`
|
|
||||||
1. Faire un commit pour enregistrer la modification
|
|
||||||
```
|
|
||||||
|
|
||||||
```admonish note title="Dans le compte rendu"
|
|
||||||
1. Expliquer l’utilité de la commande `git restore`
|
|
||||||
1. Expliquer ce que font `git diff HEAD^1` et `git reset HEAD^1`. Préciser la signification de `HEAD^1`
|
|
||||||
```
|
|
||||||
|
|
||||||
### 6 – Etiqueter un commit
|
|
||||||
|
|
||||||
**Objectif :** Ajouter une étiquette ("tag")
|
|
||||||
|
|
||||||
```admonish travail
|
|
||||||
- Trouver le hash (identifiant) d’un ancien commit avec `git log`
|
|
||||||
- Créer une étiquette `my_tag` sur ce commit (vous aider de la [documentation](https://git-scm.com/docs/git-tag))
|
|
||||||
- Vérifier que l’étiquette apparaît dans l’historique avec `git log`
|
|
||||||
- Taper la commande `git switch --detach my_tag` puis vérifier la position avec le log
|
|
||||||
- Revenir à l’état précédent avec `git switch -`
|
|
||||||
```
|
|
||||||
|
|
||||||
```admonish note title="Dans le compte rendu"
|
|
||||||
- Expliquer ce que fait la commande `git switch` et son utilité
|
|
||||||
- Expliquer ce qu’est un "tag" git et à quoi cela sert (vous aider de la [documentation](https://git-scm.com/book/en/v2/Git-Basics-Tagging))
|
|
||||||
```
|
|
||||||
|
|
||||||
## Ressources supplémentaires
|
|
||||||
|
|
||||||
- [Git book](https://git-scm.com/book/en/v2)
|
|
||||||
- [Git doc](https://git-scm.com/doc)
|
|
||||||
- [Git vidéos](https://git-scm.com/videos)
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue