Semaine 04: Git avec NetBeans - semiria/INF2015 GitHub Wiki

##Objectifs

  • Manipuler les commandes principales de Git avec NetBeans
  • Manipuler un dépôt distant sur github

##Prérequis

##Introduction Sans contrôle de version, une méthode pour gérer les changements est de se créer ses propres répertoires ou ses propres fichiers en laissant une trace de la date ou de la personne qui est responsable des changements.

projetSansCVS/
└── src
    └── org
        └── uqam
            └── sguilber
                ├── mathematiques
                │   ├── division.java
                │   ├── multiplication.java
                │   ├── somme.java
                │   └── soustraction.java
                ├── mongodb
                │   └── mongodbCommand.java
                ├── mssql
                │   └── mssqlCommand.java
                ├── mysql
                │   └── mysqlCommand.java
                ├── soumissionAssurance
                │   ├── moto.java
                │   ├── vehicule.java
                │   ├── vehiculeRecreatif.java
                │   └── voiture.java

Mais ce n'est pas bien long après le début du développement d'arriver à un point où nous ne savons plus où nous en sommes...

projetSansCVS/
└── src
    └── org
        └── uqam
            └── sguilber
                ├── mathematiques
                │   ├── division.java
                │   ├── division_20140921-2.java
                │   ├── division_20140921.java
                │   ├── division_20140922.java
                │   ├── division_bak.java
                │   ├── multiplication-2.java
                │   ├── multiplication-fuuuu.java
                │   ├── multiplication.java
                │   ├── somme.java
                │   └── soustraction.java
                ├── mongodb
                │   └── mongodbCommand.java
                ├── mssql
                │   └── mssqlCommand.java
                ├── mysql
                │   └── mysqlCommand.java
                ├── soumissionAssurance
                │   ├── moto.java
                │   ├── moto_FINAL2.java
                │   ├── moto_final.java
                │   ├── moto_new.java
                │   ├── vehicule.java
                │   ├── vehiculeRecreatif.java
                │   └── voiture.java
                └── soumissionAssurance_pstlouis
                    ├── moto.java
                    ├── vehicule.java
                    ├── vehiculeRecreatif.java
                    └── voiture.java

##Exercices L'ensemble de ces exercices permettront de simuler les actions les plus fréquentes lors de l'utilisation de Git pendant le développement logiciel en équipe. Durant les exercices, deux instances du même dépôt distant seront créées et utilisées à différentes étapes pour mieux représenter la simulation. L'instance du projet sur lequel les exercices devront être faits sera indiquée dans le titre.

###Créer un nouveau dépôt (instance 1) Pour cet exercice, le nouveau projet sera l'instance 1

  1. Créer un nouveau dépôt distant sur github
  2. Créer un nouveau projet dans NetBeans
  3. Compiler et exécuter le projet
  4. Initialiser le dépôt Git sur le projet NetBeans
    • Clique-droit sur le projet à initialiser
    • Dans le sous-menu Versioning, sélectionner Initialize Git Repository
    • Vérifier que Root path correspond à l'emplacement physique du projet NetBeans
    • Cliquer sur Ok
  5. Faire le Commit
    • Clique-droit sur le projet
    • Dans le sous-menu Git, sélectionner Commit...
    • Entrer un message dans la boîte Commit Message:
    • Sélectionner les fichiers pour le commit dans la section _Files to Commit
    • Cliquer sur Commit
  6. Pousser le dépôt local au dépôt distant
    • Clique-droit sur le projet
    • Dans le sous-menu Git, sélectionner Remote, puis Push...
    • Configurer le dépôt distant lors de la première utilisation
      • Sélectionner Specify Git Repository Location
      • Remote Name : origin
      • Cocher Persist Remote
      • Repository URL : Récupérer le lien HTTPS disponible à partir de votre dépôt distant sur github
      • User & Password: Les accès de votre compte github
    • Cliquer sur Next
    • Sélectionner les branches de votre dépôt local qui seront utilisées pour le Push
    • Cliquer sur Next
    • Sélectionner les branches du dépôt distant qui seront mises à jour
    • Finish
  7. Admirer votre nouveau projet sur github

###Ignorer des fichiers et répertoires Pour éviter que des fichiers soient mis sous contrôle de version, nous pouvons indiquer à git d'ignorer certains fichiers ou dossiers. Par défaut, NetBeans ignore certains dossiers (/dist, /build, nbproject/private). Pour ignorer des fichiers ou dossiers, il suffit de reproduire les étapes suivantes:

  1. Dans la vue Files de NetBeans, clique-droit sur le dossier/fichier
  2. Dans le sous-menu Git, sélectionner Ignore puis Ignore
  3. Dans une fenêtre explorateur, remarquer la création d'un fichier .gitignore. Ce fichier indique à Git les dossiers et fichiers à ignorer
  4. Faire un commit
  5. Pousser la modification sur le dépôt distant

###Importer un dépôt existant (instance 2) Vous devrez importer le projet que vous avez créé lors de l'exercice précédant de manière à avoir deux copies distinctes du projet sur votre ordinateur. La copie nouvellement importée sera référée par le nom instance 2 dans les exercices.

  1. Dans le menu principal de NetBeans, sélectionner Team
  2. Sélectionner Remote, puis Clone...
  3. De la fenêtre Remote Repository
    • Repository URL : Récupérer le lien HTTPS disponible à partir du dépôt distant sur github
    • User & Password: Vos accès sur github
    • Cliquer sur Next
  4. De la fenêtre Remote branches
    • Sélectionner la branche à importer dans le dépôt local
    • Cliquer sur Next
  5. Configurer Destination Directory
    • Parent Directory : Emplacement physique où importer le projet
    • Clone Name : Nom du dossier qui contiendra le projet importé
    • Checkout Branch : Branche à importer
    • Remote Name : origin
    • Cliquer sur Finish
  6. Une fenêtre s'ouvrira à la fin de l'importation pour inviter à créer un projet NetBeans à partir des sources importées, acceptez.

###Modifier le dépôt distant (instance 2)

  1. Modifier et sauvegarder un fichier de votre projet nouvellement configuré pour Git
  2. Faire le commit
  3. Pousser les modifications sur le dépôt distant
  4. Admirer la contribution au projet sur github

###Mettre à jour un dépôt local (instance 1) Pour finaliser la simulation du travail en équipe, vous devrez mettre à jour le dépôt local de votre instance 1. À la fin de cette simulation, les deux copies seront identiques sans avoir eu à écrire le code deux fois.

  1. Importer la dernière version disponible sur le dépôt distant
    • Clique-droit sur le projet
    • Dans le sous-menu Git, sélectionner Remote, puis Pull
    • Sélectionner la bonne configuration Git
    • Cliquer sur Next
    • Sélectionner la branche master
    • Cliquer sur Next
    • Sélectionner la branche master
    • Cliquer sur Finish

###Modifier le commit précédant (instance 1)

  1. Clique-droit sur une classe du projet
    • Dans le sous-menu Git, cliquer sur Show History
    • Remarquer le message du commit le plus récent...
    • Fermer la fenêtre
  2. Modifier et sauvegarder la même classe dont vous avez consulté l'historique
  3. Faire le Commit
    • Dans la fenêtre de dialogue, cocher Amend Last Commit
    • Entrer un nouveau message
    • Cliquer sur Commit
  4. Répéter la première étape et remarquer que le message de commit est différent
  5. Pousser les modifications sur le dépôt distant
  6. Sur github, remarquer que l'historique de commit contient seulement votre dernier commit

###Régler un conflit de merge Un conflit peut survenir entre autre lorsque les mêmes lignes d'un même fichier ont été modifiés dans deux dépôts locaux différents. À ce moment, il faudra régler le conflit avant de poursuivre le développement. Dans cet exercice, nous allons simuler un conflit et le régler.

  1. Mettre à jour instance 1 et instance 2 avec le dépôt distant (Pull)
  2. Modifier une ligne de l'instance 1 dans une classe
  3. Faire le commit
  4. Pousser la modification sur le dépôt distant
  5. Dans instance 2, modifier exactement la même ligne de la même classe
  6. Faire le commit
  7. Pousser la modification sur le dépôt distant
  8. NetBeans indiquera qu'il y a un conflit, pour le régler, cliquer sur Merge
  9. NetBeans indiquera que Git n'a pas réussi son merge, cliquer sur Resolve
  10. Résoudre le conflit en sélectionnant les modifications du dépôt local ou du dépôt distant et confirmer le résultat
  11. Une fois le conflit résolu, il faut faire le commit

##Solutionnaire Aucun solutionnaire ne sera disponible à la fin de cette démonstration

##Références

⚠️ **GitHub.com Fallback** ⚠️