Git est un logiciel de gestion de versions décentralisé. Un logiciel de gestion de versions vous permet de garder plusieurs versions de vos logiciels, ce qui vous permet de revenir à une ancienne version si vous le souhaitez. Il vous permet aussi de développer plusieurs branches, par exemple pour tester une nouvelle fonctionnalité. Il est impensable de ne pas utiliser un logiciel de gestion de versions quand on développe un projet.
Si vous l'associez à GitHub, vous pourrez partager les différentes versions de vos développements avec d'autres personnes et avoir des sauvegardes facilement récupérables.
Clic sur le projet NetBeans puis menu Team > Git > Initialize Repository… ou bien clic droit sur le projet NetBeans > Versioning > Initialize Git Repository…
Indiquez le répertoire du dépôt. Laissez la valeur par défaut qui est le répertoire du projet. Une fenêtre output s'ouvre en bas de NetBeans, avec la commande git init
lancée.
Si ça n'est pas déjà fait, vous pouvez configurer Git avec une configuration globale : menu Team > Repository > Open Global Configuration (ou bien menu Team > Git > Open Global Configuration). Dans le fichier .gitConfig qui est affiché, vous pouvez saisir le nom et l'email qui seront indiqués à chaque commit.
Si vous ouvrez le répertoire "Source packages", vous verrez que les noms des fichiers sont colorés en vert.
Voici le code couleur :
Faites un commit du projet dans son état initial :
La fenêtre output contient les commandes git qui sont lancée dans un onglet à part :
git add
de tous les fichiers affichés dans la fenêtre pop-up précédente ;git commit
avec le message que vous avez donné.Remarquez que les noms des fichiers qui étaient en vert sont maintenant en noir. Juste pour voir, modifiez, par exemple, la classe JAXRSConfiguration en ajoutant un espace non significatif et le nom du fichier sera coloré en bleu après la sauvegarde de la modification.
NetBeans permet d'ajouter (git add) des fichiers dans l'index (stage) de Git avant le commit ou bien de les faire ajouter automatiquement au momment du commit, comme on vient de le faire. C'est la deuxième façon que vous utiliserez pendant ces TPs.
GitHub permet de partager son code avec d'autres développeurs qui travaillent sur le même projet. Toutes les informations sur les versions de Git sont enregistrées sur GitHub. Pour ce cours, GitHub va permettre à l'enseignant de voir l'avancement de votre travail.
Pour utiliser GitHub, si vous ne l'avez pas déjà fait, il faut vous créer un compte. Allez à https://github.com/.
Créez ensuite un dépôt public sur GitHub pour le projet : allez dans Github et créez un dépôt (clic sur "+" et "New Repository") du même nom que le projet : tpCustomerXxxxx. Ecrivez une description du dépôt. Ne créez pas de fichier README, .gitignore ou autre fichier dans le dépôt.
Notez l'URL du dépôt (du type https://github.com/<nom GitHub>/tpCustomerXxxxx.git). Vous pouvez le retrouver en cliquant sur "Code" et sur "HTTPS".
Il vous faut maintenant un token pour accéder à GitHub depuis NetBeans ou une ligne de commande. Si vous avec déjà un tel token, utilisez-le. Sinon, sur le site de GitHub il faut maintenant générer un token :
Vous devez déjà avoir effectué au moins un commit du projet avant d'attacher le dépôt GitHub au projet.
Menu Team > Remote > Push
Dans "Repository URL", écrire l'URL du dépôt (du type https://github.com/<nom GitHub>/tpCustomerXxxxx.git), Dans User écrire votre nom ; dans Password, coller le token que vous venez de générer. Vous pouvez cocher "Save password" pour éviter d'avoir à redonner la valeur du token. Clic Next.
Dans la page suivante, cocher master. Clic Next.
Dans la page suivante, clic Finish.
Clic sur Yes pour la question "Branch "origin/master" created locally.
Do you want to set up branch "master" to track the remote branch?". La commande git suivante est lancée :
git push https://github.com/<nom Git Hub>/tpCustomer.git refs/heads/master:refs/heads/master
Vérifiez sur GitHub que votre nouveau dépôt contient bien le projet. Attention, GitHub a changé récemment le nom de la branche principale de "master" à "main" et NetBeans est resté avec "master" ; vérifiez que vous êtes bien dans la bonne branche.
Vous pouvez maintenant utiliser Git pour gérer les versions de votre projet et faire des push sur le dépôt GitHub.
Optionnel : Une vidéo YouTube qui montre comment faire suivre un projet NetBeans par Git, lancer des commits, créer un dépôt (repository) GitHub et faire des pushs sur ce dépôt GitHub. Une vidéo un peu plus longue mais plus complète (parle en particulier des branches) sur l'utilisation de Git avec NetBeans.
Certains fichiers ne doivent pas être suivis par Git, ni poussés sur GitHub, soit parce qu'ils sont particuliers à chaque développeur, soit parce qu'ils sont générés à chaque build du projet et donc prennent de la place inutilement et ralentissent les opérations.
Le fichier .gitignore indique les modèles des fichiers qui ne seront pas suivis par Git. Pour les modèles, vous pouvez, par exemple, consulter ce site : https://www.atlassian.com/git/tutorials/saving-changes/gitignore. Ce fichier peut déjà être créé à la racine de votre projet (ça dépend de la version de NetBeans ; pour le voir, allez sur l'onglet "Files", à côté de l'onglet "Projects").
Pour un projet Maven, il faut au minimum y mettre cette ligne (target
est le répertoire où sont rangés les fichiers créés lors d'un build : classes compilées, fichiers jar, ...) :
/target/
Si votre repository GitHub contient ce répertoire target
et que vous n'avez pas de fichier .gitignore
, créez ce fichier. Pour le créer sous NetBeans, clic droit sur la racine du projet > Other > Other > Empty File.
Ces fonctionnalités pourront vous être utiles dans la suite des TPs.
Quand on modifie du code, un crochet vert apparait dans la marge de gauche, jusqu'à ce qu'on lance un commit.
Pour chaque fichier, si on clique en haut sur "History" au lieu de "Source", on peut voir un historique des modifications, avec les commits qui ont été faits. Si on clique sur une ligne de l'historique on peut voir les modifications qui ont été faites, qui concernent cette ligne.
Afficher un historique des commits : Menu Team > Show History (git log)
Afficher les différences entre le répertoire de travail, l'index et le dépôt local : Menu Team > Show Changes
Annuler les modifications depuis le dernier commit : Menu Team > Revert Modifications... (git restore) Choix entre
Pour annuler un commit, menu Team > Revert/Recover (git revert ou git reset). Pour Revert Commit (git revert), on doit entrer un message car, en fait, un nouveau commit est ajouté qui effectue toutes les actions nécessaires pour défaire ce qui avait été fait dans le commit annulé.
Travail avec les branches (créer une branche, changer la branche en cours) : Menu Team > Branch/Tag.
Voir l'état des dépôts : menu Team > Repository > Repository Browser
Évidemment vous pouvez aussi lancer toutes les commandes Git en dehors de NetBeans en ouvrant une fenêtre shell (cmd sous Windows) dans le répertoire racine du projet.