From 0906badab77f5a9435e390347ff7028fffa49d3d Mon Sep 17 00:00:00 2001
From: Quentin Bramas <bramas@unistra.fr>
Date: Mon, 11 Nov 2024 15:42:12 +0100
Subject: [PATCH] ajout de commandes

---
 src/components/GitCheatSheet.tsx | 113 ++++++++++++++++++++++++++++---
 1 file changed, 103 insertions(+), 10 deletions(-)

diff --git a/src/components/GitCheatSheet.tsx b/src/components/GitCheatSheet.tsx
index ccb918f..7343d17 100644
--- a/src/components/GitCheatSheet.tsx
+++ b/src/components/GitCheatSheet.tsx
@@ -20,7 +20,7 @@ Lorsque vous exécutez \`git clone <url>\`, Git réalise plusieurs opérations :
 #### Exemple d'utilisation
 
 \`\`\`bash
-git clone https://git.unistra.fr/mon-username/mon-projet.git
+git clone git@git.unistra.fr:mon-username/mon-projet.git
 \`\`\`
 
 - **Explication** :
@@ -40,7 +40,7 @@ git clone https://git.unistra.fr/mon-username/mon-projet.git
 3. **Copiez l'URL HTTPS** :
    - Sur la page d'accueil du projet, cliquez sur le bouton **"Clone"** (généralement situé en haut à droite).
    - Vous verrez deux options : **HTTPS** et **SSH**.
-   - Copiez l'URL sous l'option **HTTPS** (elle ressemble à \`https://git.unistra.fr/mon-username/mon-projet.git\`).
+   - Copiez l'URL sous l'option **SSH** (elle ressemble à \`git@git.unistra.fr:mon-username/mon-projet.git\`).
 
 4. **Utilisez cette URL dans la commande** :
    - Collez l'URL après \`git clone\` dans votre terminal.
@@ -48,12 +48,10 @@ git clone https://git.unistra.fr/mon-username/mon-projet.git
 #### Exemple avec GitLab de l'université
 
 \`\`\`bash
-git clone https://git.unistra.fr/etudiant/mon-projet.git
+git clone git@git.unistra.fr:mon-username/mon-projet.git
 \`\`\`
 
-- **Conseils** :
-  - Utilisez l'URL HTTPS si vous débutez avec Git et GitLab.
-  - Si vous préférez l'authentification via SSH (plus sécurisée), assurez-vous d'avoir configuré votre clé SSH sur GitLab.
+Pour fonctionner, vous devez avoir renseigner votre clé SSH sur GitLab. Allez dans les paramètres de votre compte pour ajouter votre clé publique SSH.
 
 #### Résultat attendu
 
@@ -65,10 +63,27 @@ Après avoir exécuté \`git clone\` :
 
 Cela permet une collaboration efficace en garantissant que chaque membre de l'équipe dispose d'une copie complète et synchronisée du projet.
 `,
-        example: 'git clone https://github.com/utilisateur/projet.git',
-        result: 'Le projet est cloné dans un nouveau dossier nommé "projet".',
+        example: 'git clone git@git.unistra.fr:mon-username/mon-projet.git',
+        result: 'Le projet est cloné dans un nouveau dossier nommé "mon-projet".',
         tag: 'création',
     },
+    {
+        command: 'git config --global user.name "Votre Nom"',
+        description: 'Configurer le nom d’utilisateur Git.',
+        example: 'git config --global user.name "Jean Dupont"',
+        result: 'Le nom d’utilisateur est configuré pour tous les dépôts Git sur votre machine.',
+        tag: 'création',
+    },
+    {
+        command: 'git config --global user.email "user@etu.unistra.fr"',
+        description: 'Configurer l’adresse email Git.',
+        example: 'git config --global user.email "user@etu.unistra.fr"',
+        result: 'L’adresse email est configurée pour tous les dépôts Git sur votre machine.',
+        tag: 'création',
+    },
+    {
+        command: 'git config --global user.email "
+    },
     {
         command: 'git status',
         description: 'Afficher l’état des fichiers dans le répertoire de travail.',
@@ -86,8 +101,8 @@ Cela permet une collaboration efficace en garantissant que chaque membre de l'é
     {
         command: 'git commit -am "message"',
         description: 'Enregistrer les modifications avec un message. tous les fichiers qui étaient déjà suivis sont automatiquement ajoutés.',
-        example: 'git commit -m "Ajout du fichier principal"',
-        result: 'Un nouveau commit est créé avec le message "Ajout du fichier principal".',
+        example: 'git commit -am "résolution de TP1"',
+        result: 'Un nouveau commit est créé avec le message "résolution de TP1".',
         tag: 'basic',
     },
     {
@@ -108,6 +123,84 @@ Cela permet une collaboration efficace en garantissant que chaque membre de l'é
         common: 'Gestion des conflits',
         command: 'git pull ou git merge',
         description: 'Résoudre les conflits lors de la fusion des branches ou lors de la récupération des modifications.',
+        long_description: `
+Lorsque vous fusionnez des branches ou récupérez des modifications depuis le dépôt distant (avec \`git pull\`), il peut arriver que Git détecte des conflits entre les différentes versions des fichiers. Ces conflits surviennent lorsque les mêmes parties d'un fichier ont été modifiées de manière incompatible dans les branches en cours de fusion.
+
+#### Comment résoudre les conflits
+
+1. **Affichage des conflits** :
+    - Lorsqu'un conflit est détecté, Git vous informe des fichiers concernés et des parties conflictuelles.
+    - Vous verrez des marqueurs spéciaux dans le fichier pour indiquer les parties en conflit.
+
+2. **Ouverture du fichier** :
+    - Ouvrez le fichier en conflit dans un éditeur de texte.
+    - Recherchez les parties conflictuelles marquées par des balises spéciales.
+        Les zones en conflits sont situées entre les balises \`<<<<<<<\`, \`=======\`, et \`>>>>>>\`.
+
+3. **Résolution manuelle** :
+    - Modifiez le fichier pour résoudre les conflits.
+    - Supprimez les balises de conflit et conservez uniquement les parties qui doivent être conservées.
+
+4. **Validation des modifications** :
+    - Une fois les conflits résolus, enregistrez le fichier modifié.
+    - Utilisez \`git add\` pour marquer le fichier comme résolu.
+
+5. **Finalisation de la fusion** :
+    - Après avoir résolu tous les conflits, exécutez \`git commit\` pour finaliser la fusion.
+    - Git crée un nouveau commit qui intègre les modifications des deux branches.
+        le message du commit par défaut contient des informations sur les conflits résolus.
+        Vous n'avez pas besoin de modifier ce message si vous êtes satisfait de la résolution.
+        Vous pouvez juste fermer l'éditeur de message de commit pour valider le message par défaut.
+
+#### Exemple d'utilisation
+
+\`\`\`bash
+$ git pull origin main
+Auto-merging fichier.txt
+CONFLICT (content): Merge conflict in fichier.txt
+Automatic merge failed; fix conflicts and then commit the result.
+\`\`\`
+
+- **Explication** :
+    - Git vous informe qu'il y a un conflit dans le fichier \`fichier.txt\`.
+    - Vous devez ouvrir ce fichier, résoudre les conflits manuellement, puis valider les modifications.
+
+Contenu du fichier \`fichier.txt\` après un conflit :
+
+\`\`\`
+Blabla blabla
+<<<<<<< HEAD
+JE VEUX RAJOUTER CE TEXTE
+=======
+QUELQU'UN D'AUTRE A FAIT DES MODIFICATIONS ICI
+>>>>>>> main
+Blabla blabla
+\`\`\`
+
+On voit ici que les parties en conflit sont entourées de balises spéciales. Vous devez choisir quelle partie garder et laquelle supprimer. On peut aussi garder les deux parties, ou les modifier pour obtenir un résultat différent.
+
+Voici un exemple de résolution de conflit :
+\`\`\`
+Blabla blab
+JE VEUX RAJOUTER CE TEXTE et QUELQU'UN D'AUTRE A FAIT DES MODIFICATIONS ICI
+Blabla blabla
+\`\`\`
+
+Ici, j'ai choisi de garder les deux parties et de les combiner.
+
+Je termine la résolution avec les commandes:
+\`\`\`bash
+git add fichier.txt
+git commit
+\`\`\`
+
+Je quitte l'éditeur qui vient de s'ouvrir ( avec ":wq" sous vim par exemple) et le commit est créé avec le message par défaut.
+
+Je pense à pousser mes modifications avec un \`git push\` pour les partager avec les autres membres de l'équipe.
+
+Pour finir je peux voir les commits en faisant un \`git log\` pour vérifier que tout est bon.
+`,
+
         example: 'git pull origin main',
         result: 'Les modifications de la branche "main" sont fusionnées dans votre branche locale.',
         tag: 'conflits',
-- 
GitLab