Skip to content

Latest commit

 

History

History
199 lines (127 loc) · 7.42 KB

howto-git-workflow.org

File metadata and controls

199 lines (127 loc) · 7.42 KB

Configuration de Git et du “Git workflow” (jeu Snake)

Hello Git!

Avant d’utiliser Git, on se présente:

  1. Configurer son prénom et son nom:
    git config --global user.name "PRÉNOM NOM"
        
  2. Configurer son e-mail:
    git config --global user.email MON_EMAIL
        
  3. Choix de la méthode de merging par défault (évite le warning imprimé en orange après chaque git pull):
    git config --global pull.rebase false
        

Notes:

  • L’option --global écrit ces éléments de configuration dans le fichier ~/.gitconfig. Cette config globale est utilisée par tous les dépôts Git de votre compte sous WSL.
  • Sans l’option --global, les réglages sont à faire depuis le dossier d’un dépôt local et la configuration sera écrite dans .git/config de ce dépôt.

Vue d’ensemble

Exemple pour un binôme n°1 (codename: b01) avec élève1 et élève2

  • On va créer un dépôt par binôme pour le jeu
  • Votre dépôt n’est crée qu’une seule fois, ensuite il sera cloné (à volonté)
  • Créer ce dépôt initial ensemble (binôme, trinômes)

Détail des étapes à réaliser

Choisir qui sera élève1 et qui sera élève2.

Étape 1: Init: Initialisation du dépôt sur Github.com

  1. élève1 se connecte sur Github.com
  2. Depuis sa page https://github.com/COMPTE_GITHUB_ÉLÈVE1, élève1 crée le dépôt Git:
    • Cliquer sur “Repositories” (onglet en haut), puis sur le bouton “New” (en vert)
    • Remplir “Repository name” avec un nom de dépôt de la forme: gtech1-bXX-snake
    • Cliquer sur “Add a README file”
    • Cliquer sur “Create repository”
    • Le dépôt est maintenant créé sur github.com

Étape 2: Fork: Clonage d’un dépôt du compte Github élève1 dans le compte Github élève2

  • Je suis élève2: je “fork” le dépôt Github.com de élève1 sur mon Github.com:
    1. Je me connecte sur Github.com
    2. Je vais visiter la page du compte élève1: https://github.com/COMPTE_GITHUB_ÉLÈVE1/gtech1-bXX-snake
    3. Je clique sur “Fork” (en haut à gauche)

      J’ai maintenant un clone du dépôt de élève1 dans mon compte github.com

  • Au final: Chacun doit avoir les 1 dépôt =gtech1-bXX-snake= son compte Github

Étape 3: Créer sa clé SSH

  • Note: Si vous avez encore votre clé SSH du projet#2, vous pouvez la réutiliser
  • Créez votre paire de clés SSH au format ED25519: (Une clé SSH permet de ne plus avoir à saisir son mot de passe à tout bout de champ!)

    mkdir -p ~/.ssh && cd ~/.ssh && ssh-keygen -t ed25519 -C MON_EMAIL

    IMPORTANT: ssh-keygen va vous poser plusieurs questions, répondez par ENTER à chaque fois.

    • Note: Parmi ces questions, on vous demande une “passphrase” qui est le mot de passe qui protégè votre clé privée, dans notre cas il est préférable de la laisser vide (appuyer sur ENTRÉE sans rien répondre à la question)

    IMPORTANT:

    • La commande ci-dessus créé une paire de fichiers (dans le dossier courant, ici ~/.ssh):
      • clé publique: ~/.ssh/id_ed25519.pub Vous pouvez la diffuser
      • clé privée: ~/.ssh/id_ed25519 NE JAMAIS PARTAGER VOTRE CLÉ PRIVÉE!!!
    • [Info: Vous pouvez avoir autant de clés SSH que nécessaire pour divers usages]
  • Importer votre clé ***publique*** ~/.ssh/id_ed25519.pub sur Github.com

Étape 4: Clone: Cloner le dépôt Github en local sur sa machine (mode SSH)

  • Pour élève1 et élève2: je clone simplement le dépôt github.com sur ma machine @G.Tech1: mkdir -p ~/proj7/ && cd ~/proj7/

    Je clone mon dépôt Github (en mode SSH): git clone [email protected]:MON_COMPTE_GITHUB/gtech1-bXX-snake.git snake

  • Notes/Rappels:
    • Dans les grandes lignes, la commande git clone URL fait en interne:
      • git init : féer un dépôt local
      • git pull URL main : récupérer l’histoire distante
    • La commande git clone URL DOSSIER créé le clone dans un nouveau sous DOSSIER.

Étape 5: Push, pull: Test 1 - Git pull & push sur mes dépôts à moi

Pour tout le monde: depuis ma machine @G.Tech1:

  • Je teste pull et push entre mon dépôt local et son miroir Github.com:

    cd ~/proj7/snake/; git pull ; git push

    Ces commandes ne doivent pas afficher d’erreurs.

Étape 6: Pull: Syncho croisée read-only Git ← Github autre élève (mode HTTPS)

  • Je rajoute un point de synchronisation avec le dépôt github.com du/des autre(s) élève(s):
    • Pour chacun de mes camarades du binôme (= 1 pour les binômes, = 2 pour les trinômes):
      cd ~/proj7/snake/
      git remote add ALIAS_AUTRE_ELEVE URL_HTTPS_AUTRE_ELEVE
              

      Avec:

      • ALIAS_AUTRE_ELEVE: donner un nom court en miniscules pour le dépôt Github de votre camarade Il sera utilisé pour faire: git pull ALIAS_AUTRE_ELEVE main
      • URL_HTTPS_AUTRE_ELEVE=: du type https://github.com/COMPTE_AUTRE_ÉLÈVE/gtech1-bXX-snake.git

Étape 7: Test 2 - Git pull des modifs du dépôt Github de l’autre élève

Pour tout le monde, depuis le PC @G.Tech1:

  • Je teste pull entre mon dépôt local et le dépôt Github.com des autres élèves:

    cd ~/proj7/snake/ ; git pull ALIAS_AUTRE_ELEVE main

    Notes:

    • Ces commandes (bien que inutiles à ce stade) ne doivent pas afficher d’erreurs.
    • ALIAS_AUTRE_ELEVE a été décrit plus haut dans la section “Syncho croisée read-only Git ← Github autre élève”

Mise à jour du Fichier Google “URL dépôts Github”*

Une fois vos dépôts Github.com et Git locaux en place:

Complétez le Fichier Google “URL dépôts Github” avec votre URL.

Conclusion

Si les tests “Test 1” et “Test 2” ont fonctionné, alors vous avez mis en place ceci et votre coach vous félicite:

     élève1                              élève2
     ======                              ======
   Github.com  ───────       ───────   Github.com
        ↑              ╲   ╱                ↑
      │ │               ╲ ╱               │ │
pull--│ │--push          ╳          pull--│ │--push
 SSH  │ │  SSH    pull--╱ ╲--pull    SSH  │ │  SSH
      ↓          HTTPS ╱   ╲ HTTPS        ↓
   [email protected]  <──────       ──────>   [email protected]

En résumé:

  • J’envoie mon travail vers mon mirroir Github: git push
  • Je récupère le travail de mon/mes binôme(s): git pull ALIAS_AUTRE_ELEVE main
  • Si j’ai plusieurs machines pour travailler, j’utiliserai git pull sur toutes mes machines si j’ai fait auparavant un git push depuis une autre machine

    Diagrame simplifié:

    machine1 <- pull,push -> Github.com <- push,pull -> machine2