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:56]
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 ===== ===== 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>​
-  - 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]]+  - 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]] 
  
 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>​
  
 +
 +
 +
 +===== Gitignore ​ =====
 +  - Un des étudiants du groupe de TD ajoute le fichier {{:​2018_2019:​s2:​td:​gitignore.zip|.gitignore}} dans votre répertoire courant, i.e. 
 +    - Dézipper le fichier.
 +    - <​code>​ git add .gitignore</​code> ​
 +    - <​code>​git commit -a -m "ajout du .gitignore"​ </​code> ​
 +    - <​code>​git push</​code> ​
 +  - 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 configuration. Si 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 (un- devient 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é. ​
 +
 +
 +==== Synchronisation de votre répertoire en groupe ====
 +
 +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