GIT
Bureau E204
© 2020-2021 – ESPRIT – Module Intégration Continue – GIT
PLAN DU COURS
– Introduction
– Commandes GIT avec Git Bash
– Ajouter le Projet « timesheet-ci » à GitHub
– Récupérer un Projet Existant de GitHub vers votre STS
© 2020-2021 – ESPRIT – Module Intégration Continue – GIT 2
INTRODUCTION
• Git est un système de contrôle de version décentralisé
gratuit et open source conçu pour gérer tout
(historique, traçabilité des modifications, …), des petits
projets aux très grands projets avec rapidité et
efficacité.
© 2020-2021 – ESPRIT – Module Intégration Continue – GIT 3
Initialisation de GIT
• Installer Git à partir du Drive (télécharger et installer Git-
[Link]-[Link]) ou à partir du site officiel [Link]
• SCM : Source Control Management
• Ouvrir Git Bash et lancer git --version pour vérifier que Git
est bien installé :
Mourad HASSINI@M104 MINGW64 ~
$ git --version
git version [Link].1
© 2020-2021 – ESPRIT – Module Intégration Continue – GIT 4
Initialisation de GIT
• Toujours sur Git Bash, définir ton identité, avec git
config, pour éviter que Git vous demande cela à
chaque action
$ git config --global [Link] "Mourad HASSINI"
$ git config --global [Link] "[Link]@[Link]"
© 2020-2021 – ESPRIT – Module Intégration Continue – GIT 5
Initialisation de GIT
• Récupérez le TP Timesheet-ci du Drive : timesheet-ci. Mettez-le dans votre workspace.
• Seuls le dossier src et le fichier [Link] sont à envoyer sur Git :
© 2020-2021 – ESPRIT – Module Intégration Continue – GIT 6
Initialisation de GIT
• Aller dans un projet déjà existant sur votre workspace,
et initialiser Git pour pouvoir l’utiliser sur ce projet (git
init puis git status) :
$ cd C:/Work/workspace-sts/timesheet-ci
$ git init
Initialized empty Git repository in C:/Work/workspace-sts/timesheet-
ci/.git/
$ git status
nothing added to commit but untracked files present (use "git add"
to track)
© 2020-2021 – ESPRIT – Module Intégration Continue – GIT 7
Le Commit
• Sélectionner les fichiers à commiter avec la commande git
add
• Puis un git status
• Puis faire un git commit . Cela revient à dire à Git de
prendre une photo de ton projet.
$ git add [Link] src
$ git status
(ne pas inclure les fichiers : .classpath .mvn/ .project .settings/
.springBeans [Link] mvnw [Link] : ces fichiers sont locaux et
créés automatiquement, le développer ne le changera jamais).
$ git commit -m "initialisation du projet timesheet-ci"
[master (root-commit) 6257aab] initialisation du projet timesheet-ci
82 files changed, 2923 insertions(+)
…
© 2020-2021 – ESPRIT – Module Intégration Continue – GIT 8
Le Commit
• Après chaque modification d’un ou de plusieurs
fichiers, vous pouvez refaire la même action pour
commiter vos modifications : git status puis git add puis
git commit (avec un autre commentaire bien sûr).
• Modifier le contenu d’un fichier ([Link] par
exemple) et refaites les actions ci-dessous :
$ git status
$ git add src/main/java/tn/esprit/spring/entities/[Link]
$ git commit -m "ajout commentaire"
[master 5386a19] ajout commentaire
1 file changed, 1 insertion(+)
© 2020-2021 – ESPRIT – Module Intégration Continue – GIT 9
L’historique
• Lancer la commande git log pour voir les deux commit
(les deux photos de ton projet) :
$ git log
commit 5386a198346eb13131c60ea9be651a3da667c4c2 (HEAD -> master)
Author: Mourad HASSINI <[Link]@[Link]>
Date: Fri Apr 9 [Link] 2021 +0100
ajout commentaire
commit 6257aabac843778b7e7599f86b72f7b3bddf4c1a
Author: Mourad HASSINI <[Link]@[Link]>
Date: Fri Apr 9 [Link] 2021 +0100
initialisation du projet timesheet-ci
© 2020-2021 – ESPRIT – Module Intégration Continue – GIT 10
Les branches
• Créer une branche (git branch) et lister les branches (le *
indique sur quelle branche nous sommes actuellement) :
$ git branch entreprise-management
$ git branch
* master
entreprise-management
© 2020-2021 – ESPRIT – Module Intégration Continue – GIT 11
Les branches
• Basculer sur la branche entreprise-management :
$ git checkout entreprise-management
Switched to branch 'entreprise-management’
$ git branch
master
* entreprise-management
© 2020-2021 – ESPRIT – Module Intégration Continue – GIT 12
Les branches
• Faite une modification sur votre fichier ([Link] par
exemple) et commiter une modification sur cette
branche :
$ git add [Link]
$ git commit -m "modification 2"
[entreprise-management 042579c] 2ème ajout commentaire
1 file changed, 2 insertions(+), 1 deletion(-)
• Quelle commande pour voir l’historique :
© 2020-2021 – ESPRIT – Module Intégration Continue – GIT 13
Les branches
$ git log
Author: Mourad HASSINI <[Link]@[Link]>
Date: Fri Apr 9 [Link] 2021 +0100
2ème ajout commentaire
commit 5386a198346eb13131c60ea9be651a3da667c4c2 (master)
Author: Mourad HASSINI <[Link]@[Link]>
Date: Fri Apr 9 [Link] 2021 +0100
ajout commentaire
commit 6257aabac843778b7e7599f86b72f7b3bddf4c1a
Author: Mourad HASSINI <[Link]@[Link]>
Date: Fri Apr 9 [Link] 2021 +0100
initialisation du projet timesheet-ci
© 2020-2021 – ESPRIT – Module Intégration Continue – GIT 14
Les branches
• Récupérer ce travail sur la branche principale :
basculer sur la branche qui va recevoir (master dans
notre cas), faire un merge et supprimer la branche qui
vient d’être mergée (optionnel) :
© 2020-2021 – ESPRIT – Module Intégration Continue – GIT 15
Les branches
$ git checkout master
Switched to branch 'master’
$ git branch
* master
entreprise-management
$ git merge entreprise-management
Updating 5386a19..042579c
Fast-forward
src/main/java/tn/esprit/spring/entities/[Link] | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
© 2020-2021 – ESPRIT – Module Intégration Continue – GIT 16
Les branches
$ git log
commit 042579c2d194e357f6670eff05f214f8f7325136 (HEAD -> master, entreprise-management)
Author: Mourad HASSINI <[Link]@[Link]>
Date: Fri Apr 9 [Link] 2021 +0100
2ème ajout commentaire
commit 5386a198346eb13131c60ea9be651a3da667c4c2
Author: Mourad HASSINI <[Link]@[Link]>
Date: Fri Apr 9 [Link] 2021 +0100
ajout commentaire
commit 6257aabac843778b7e7599f86b72f7b3bddf4c1a
Author: Mourad HASSINI <[Link]@[Link]>
Date: Fri Apr 9 [Link] 2021 +0100
initialisation du projet timesheet-ci
$ git branch -d entreprise-management
Deleted branch entreprise-management (was 0b4990e).
$ git branch
* master
© 2020-2021 – ESPRIT – Module Intégration Continue – GIT 17
Dépôt distant GitHub
• Jusque là, Git nous a permis
de travailler seul sur notre
projet en local (versionning,
historisation, …).
• Nous avons utiliser le
dépôt Git local : dossier (.git) :
© 2020-2021 – ESPRIT – Module Intégration Continue – GIT 18
Dépôt distant GitHub
• Si on souhaite travailler en équipe :
© 2020-2021 – ESPRIT – Module Intégration Continue – GIT 19
Dépôt distant GitHub
• Créer un compte sur GitHub [Link]
• Créer un Repository (un seul parmi l’équipe)
• Associer le dépôt distant à notre dépôt local (nom du dépôt distant
origin)
• Enfin déposer votre projet sur le dépôt distant :
© 2020-2021 – ESPRIT – Module Intégration Continue – GIT 20
Dépôt distant GitHub
Mourad HASSINI@M104 MINGW64 /c/Work/workspace-sts/timesheet-ci
(master)
$ git remote add origin [Link]
$ git remote
origin
$ git push origin master
Counting objects: 137, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (116/116), done.
Writing objects: 100% (137/137), 58.56 KiB | 768.00 KiB/s, done.
Total 137 (delta 24), reused 0 (delta 0)
remote: Resolving deltas: 100% (24/24), done.
To [Link]
* [new branch] master -> master
© 2020-2021 – ESPRIT – Module Intégration Continue – GIT 21
Dépôt distant GitHub
© 2020-2021 – ESPRIT – Module Intégration Continue – GIT 22
Dépôt distant GitHub
• Ignorez ce slide, si vous travaillez seul (pas en équipe)
• Comment l’équipe récupère ce projet?
• Celui qui a mis le projet sur GitHub doit donner les accès à ces collègues
(Sur l’interface HitGub: Collaborators -> Settings)
• Les collègues doivent se connecter au dépôt distant (git remote add …)
et faire un pull :
© 2020-2021 – ESPRIT – Module Intégration Continue – GIT 23
Dépôt distant GitHub
• Ignorez ce slide, si vous travaillez seul (pas en équipe)
• Au cas où vous travaillez en équipe, les autres membres d’un même
groupe, récupèrent le code de GitHub avec la commande ci-dessous :
• git clone git://[Link]/mhassini/[Link]
• C’est équivalent à :
• git init
• git remote add origin git://[Link]/mhassini/[Link]
• git pull origin master
© 2020-2021 – ESPRIT – Module Intégration Continue – GIT 24
TP Timesheet (Maven + GIT + JUnit + Log4J)
• Si ce n’est déjà fait, récupérez le TP timesheet-ci du Drive :
timesheet-ci. Dézippez-le et Mettez-le dans votre workspace.
• Importer le projet « timesheet-ci » sur STS (File -> Import -> Existing
Maven Project -> …).
• Suivez les étapes décrites ci-dessus, dans tout le support de cours
Git, pour mettre le projet sur Git.
• Maintenant vous pouvez utilisez Git en ligne de commande ou sur
STS (Fermez puis ouvrez votre projet sur STS).
© 2020-2021 – ESPRIT – Module Intégration Continue – GIT 25
TP Timesheet (Maven + GIT + JUnit + Log4J)
• Choisissez chacun une entité d projet timesheet-ci (employe,
departement, contrat, ..)
• Suivez l’exemple déjà présent dans timesheet-ci : UserRepository,
IUserService, UserServiceImpl, UserServiceServiceTest) pour :
– Créer l’interface repository, la classe service et son interface et la
classe de test avec JUnit contenant les méthodes de tests
– Ajouter Log4J dans la classe service pour tracer ce qui se passe.
© 2020-2021 – ESPRIT – Module Intégration Continue – GIT 26