User Tools

Site Tools


2018_2019:s2:td:git

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
2018_2019:s2:td:git [2019/03/16 18:30]
blay [Introduction à GIT]
2018_2019:s2:td:git [2019/03/26 16:18]
blay [Définition de l'environnement]
Line 1: Line 1:
 ====== Introduction à GIT ====== ====== Introduction à GIT ======
 +
 +<note tip>Cet énoncé a été conçu pour des groupes qui n'ont pas vraiment commencé à utiliser leur dépôt git.
 +Il est donc possible que certaines actions soient inutiles. ​
 +</​note>​
 +===== Définition de l'​environnement =====
  
   - Adresse de gitlab :  https://​git-iutinfo.unice.fr/​   - Adresse de gitlab :  https://​git-iutinfo.unice.fr/​
 +  - Pour que l'on sache qui commit : <​code>​ git config --global user.name myusername </​code>​
 +  - Pour que l'on ait son adresse : <​code>​ git config --global user.email myemail </​code>​
   - Vous désactivez la vérification SSL <​code>​ git config --global http.sslVerify false </​code>​   - Vous désactivez la vérification SSL <​code>​ git config --global http.sslVerify false </​code>​
-  - Si vous n'avez pas encore créé de dépôt, suivez ​les instructions du dépôt+  - Suivez ​les instructions du dépôt ​(si vous ne les voyez plus :[[2018_2019:​s2:​td:​git:​depot|2018_2019:​s2:​td:​git:​depot]] 
-  - [[2018_2019:​s2:​td:​git:​depot|2018_2019:​s2:​td:​git:​depot]] +
-  - Pour savoir qui commite : <​code>​ +
-git config --global user.name "​myusername"​ +
-git config --global user.email "​monadresse@unice.fr"​ +
-</​code>​+
  
 Pour les étudiants qui utilisent leur ordi perso, il est possible que vous ayez besoin de, ouvrir un Git CMD en administrateur,​ puis taper la commande suivante:  ​ Pour les étudiants qui utilisent leur ordi perso, il est possible que vous ayez besoin de, ouvrir un Git CMD en administrateur,​ puis taper la commande suivante:  ​
 <​code>​ git config --system --unset credential.helper</​code>​ <​code>​ git config --system --unset credential.helper</​code>​
  
 +<note warning>​TODO GIT INGONE</​note>​
  
  
-Git global setup 
-git config --global user.name "BLAY Mireille"​ 
-git config --global user.email "​mireille.blay@unice.fr"​ 
  
-Create a new repository 
-git clone https://​git-iutinfo.unice.fr/​blay/​ajeter.git 
-cd ajeter 
-touch README.md 
-git add README.md 
-git commit -m "add README"​ 
-git push -u origin master 
  
-Existing folder +===== Gitignore ​ ===== 
-cd existing_folder +  - Un des étudiants du groupe de TD ajoute le fichier {{:​2018_2019:​s2:​td:​gitignore.zip|.gitignore}} dans votre répertoire courant, i.e.  
-git init +    - Dézipper le fichier. 
-git remote ​add origin https://git-iutinfo.unice.fr/blay/ajeter.git +    - <​code> ​git add .gitignore</​code>​  
-git add +    - <​code>​git commit -a -m "ajout du .gitignore"​ </​code>​  
-git commit -m "Initial ​commit"​ +    - <​code>​git push</​code>​  
-git push -u origin ​master+  - Tous les étudiants du groupe pour partir de la même version 
 +    -  <​code>​git pull</​code>​  
 +===== Git comme un historique des modifications ===== 
 +**Chaque étudiant du groupe a une tâche particulière,​ chacun choisit sa couleur ​Blanc, Bleu, Vert, Jaune, Rouge** 
 +   - Créer un fichier contenant une classe vice en fonction de votre couleur (public class X {}) 
 +       * Blanc : Game (Partie) 
 +       * Bleu : Player (Joueur) 
 +       * Vert : Move (Coup) 
 +       * Jaune : IA  
 +       * Rouge : GameManager 
 +       * Evidemment dans ce qui suit X est le nom de class créée par chacun. 
 +  - Comment interprétez-vous le résultat de la commande suivante <​code>​ git status <​/code>  
 +  - Ajoutez votre fichier ''​X.java''​ comme git vous l'a dit : <​code>​ git add X.java</code>  
 +  - Réinterprétez le résultat de la commande ''​git status''​. 
 +  ​Le fichier ''​X.txt''​ est maintenant prêt à être versionné<​code>​ git commit -m "​construction de la class X" </code> **ou** <​code>​ git commit </code> ((Un éditeur s'​ouvre qui dépend de votre configurationSi c'est VIM pour sortir ":​q"​. Si l'​éditeur ne vous convient pas, vous pouvez le configurer par exemple <​code> ​git config --global core.editor emacs </​code>​)) Quel message avez-vous en retour? 
 +  - Que donne la commande ''​git status''​ ?​  
 +  - Apportez quelques modifications au fichier ''​X.java''​.  
 +       * Blanc : ajouter l'​attribut ''​Date date''​ avec aussi ''​import java.util.Date;''​ (Game)  
 +       * Bleu : ajouter l'​attribut String pseudo ​ (Player)  
 +       * Vert : ajouter l'​attribut LocalTime time; (Move) ((<​code>​import java.time.LocalTime;​ 
 +public class Move { 
 +  private LocalTime time; 
 +}</​code>​)) 
 +       * Jaune : ajouter l'​attribut int level  (IA) 
 +       * Rouge : ajouter la methode export (GameManager) ((<​code>​import java.util.Date;​ 
 +public class Game { 
 + private Date date; 
 +}</​code>​)) 
 +  - Essayez de commiter ces modifications. Que se passe-t-il ?​ En vous aidant de la documentation accessible en tapant ''​git help commit'',​ versionnez ces modifications (avec un message décrivant le changement) (( Au lieu d'un git add suivi d'un git commit vous pouvez préférer <​code>​ git commit -a -m "ajout de l'​attribut Y ..."</​code>​ )) 
 +  - Affichez l’historique des modifications du dépôt. <​code>​ git log </​code>​  
 +  - Et pour voir les modifications apportées par le dernier ​commit ​<​code>​ git log -p  -1 </​code>​ et savoir qui fait quoi <​code>​ git log --stat </​code>​ ou <​code>​ git log --pretty=format:​"%h - %an, %ar : %s"</​code>​ **etc.** 
 +  - En utilisant ''​git diff''​ ,​ visualisez les modifications effectuées entre le premier commit et le second commit. Par exemple <​code>​ git diff 71cfcd6 0c24491 </​code>​ Attention l'​ordre des commits modifie le résultat (undevient un +). 
 +  - Modifiez plusieurs fois votre fichier par exemple en ajoutant des commentaires afin d’en avoir plusieurs versions.  
 +  - Le dernier commentaire ajouté ne vous plait finalement pas. Il existe deux manières de revenir à une version antérieure :​ de manière temporaire ou définitive. 
 +  - Exécuter ''​git log''​ et récupérez le hash (HASH) du commit où vous souhaitez revenir en arrière. 
 +         - Pour revenir en arrière de manière temporaire, exécutez <​code>​ git checkout HASH</​code>​ 
 +              -  Vérifiez que votre fichier est dans son état antérieur.  
 +               - Revenez au dernier commit (HEAD) en exécutant <​code>​ git checkout ​master</​code>​ 
 +         - Pour revenir en arrière de manière définitive,​ et donc supprimer tout ce que vous avez fait depuis ce moment : <​code>​ git reset --hard HASH </​code>​ 
 +               - Dans ''​git log'',​ vérifiez que tout ce que vous aviez effectué depuis ce commit a été effacé. ​
  
-Existing Git repository +  
-cd existing_repo +==== Synchronisation de votre répertoire en groupe ====
-git remote rename origin old-origin +
-git remote add origin https://​git-iutinfo.unice.fr/​blay/​ajeter.git +
-git push -u origin --all +
-git push -u origin --tags+
  
 +Hormis la première étape, vous avez expérimenté Git pour gérer localement vos versions. ​
 +Nous allons maintenant nous intéresser au développement collaboratif de fichier sources. ​
 +     - Visualisez les références distantes <​code>​ git remote </​code> ​
 +     - Visualisez les URL associées aux références distantes <​code>​git remote -v </​code>​
 +     - BLANC envoie son code vers le dépôt distant : <​code>​ git push origin master</​code>​
 +            *  Cette commande signifie : git push [nom-distant] [nom-de-branche]. Ici, nous souhaitons pousser votre branche master vers le serveur origin (pour rappel, cloner un dépôt définit automatiquement ces noms pour vous)
 +       - ** TOUS ** 
 +            - Visualiser l'​état du dépôt distant <​code>​ git remote show origin </​code>​
 +       - ** TOUS ** 
 +            - Synchroniser votre dépôt git avec la commande <​code>​ git pull </​code>​
 +       ​- ​ ** TOUS ** 
 +            - Chacun pousse son code sur le dépôt distant <​code>​ git push origin master</​code>​ et si vous avez un souci... pensez à vous mettre à jour.
 +  - Chacun : 
 +       * Bleu ajoute à ''​Game''​ l'​attribut "​Player black"
 +       * Vert ajoute à  ''​Game''​ l'​attribut "​Move[] moves"
 +       * Blanc ajoute à  ''​GameManager''​ l'​attribut "​Game[] games"
 +       * Jaune ajoute à  ''​GameManager''​ l'​attribut "IA[] ias"
 +       * Rouge ajoute à  ''​GameManager''​ la méthode ''​Game createGame()''​
 +       * Tous commitent en local
 +  - Là vous faîtes ensemble et dans l'​ordre en vous aidant : 
 +      - Bleu pousse sur le serveur distant. (Pour lui c'est facile ! )
 +      - Vert tente de pousser... Remédiez au conflit.
 +      - Blanc pousse sur le serveur distant. Cool ! 
 +      - Jaune pousse sur le serveur distant ....
 +      - Rouge pousse sur le serveur distant...
  
 +==== Branches de développement ====
 +<note important>​Cette partie n'est pas insdispensable à la gestion de votre projet tutoré de S2, à moins que votre groupe en ai décidé autrement ;-) </​note>​
  
 +Nous allons travailler avec une branche chacun.
 + 
 +Les caractéristiques n'​ayant pas encore été validées par votre client, vous souhaitez travailler sur celles-ci sans casser la version existante. La notion de branche permet de passer instantanément d’une version « stable » (branche « master » créée par défaut) du projet à une « version en cours de développement » (n’importe quelle autre branche que « master »
 +  - Jusqu'​ici vous avez travaillé sur une seule branche « master » : c’est la branche principale, celle qui en général contient le « vrai » code source de votre projet. Pour voir toutes vos branches <​code>​git branch </​code> ​
 +  - Chacun ​ : 
 +       - Créez une branche de votre couleur <C> dans votre dépôt Git. <​code>​ git branch C </​code> ​
 +       - Vérifiez que vous êtes bien dans la branche Master par la commande <​code>​git branch </​code> ​
 +       - Basculez dans la branche de C<​code>​ git checkout C</​code> ​
 +       - Vérifiez dans quelle branche vous êtes
 +       - Ajoutez à la classe que vous avez créée initialement (Blanc-> Game, ect) ce que vous voulez puis commitez
 +       - Fermez votre fichier.
 +       - Observez l’historique des modifications du dépôt, que remarquez-vous ?​
 +       - Revenez à la branche « master » et observez l’historique des modifications,​ que remarquez-vous ?​
 +       - Vous souhaitez ajouter vos modifications à la branche master. Fusionnez (« merge ») la branche « C » à la branche « master ». <​code>​git merge C </​code> ​ Vérifiez que la fusion s'est bien passée.
 +      - Si vous avez un conflit, ​ résolvez le conflit, pour cela dans le fichier en cause, identifiez les codes entre les balises de conflit (<<<<<​ et >>>>>​). ​
 +          - Commitez le changement (et donc la fusion) en tapant « git commit –a »
 ====== Références ====== ====== Références ======
 +http://​marklodato.github.io/​visual-git-guide/​index-en.html
 +
 https://​rogerdudler.github.io/​git-guide/​index.fr.html https://​rogerdudler.github.io/​git-guide/​index.fr.html
  
2018_2019/s2/td/git.txt · Last modified: 2019/03/26 16:18 by blay