SlideShare une entreprise Scribd logo
par la pratique
Qui suis-je ?

     Rossi Oddet
 Consultant IT chez SQLI
  Manager JCertif Lab

   Twitter : @rossioddet
Blog: http://blog.roddet.com


                               2
c’est quoi ?



  3
Un outil de gestion de version
      pour vos fichiers



              4
Oui pour votre code source aussi !



                5
Pourquoi Git ?



       6
Pour comprendre, un peu
       d’histoire


           7
Le début de la gestion de versions
         = tout en local




                8
Pendant longtemps, tout centralisé




                9
Le changement
c’est maintenant !


                     10
Gestion distribuée des sources



              11
=> Plus besoin du serveur pour
 voir l’historique d’un fichier


              12
Imaginez les performances sans
         accès réseau


              13
Votre serveur indisponible ?



             14
Commitez en local !



         15
Créer/Gérer vos branches en local



                16
Synchronisez ! quand votre serveur
          est disponible


                17
Votre serveur irrécupérable ?



              18
Pas grave vous avez TOUT en local



                19
Oui TOUT !



    20
TP 1 - Installer Git

•   Rendez-vous à la page de téléchargement : http://git-scm.com/
    download

•   Suivez les instructions suivant votre plateforme (Windows, Linux, Mac)

•   Vérification de l’installation : git --version



                                        21
TP 2 - A propos de vous


     Objectif : Paramétrage initial




                   22
git config --list
user.name=XXXX
user.email=XXXXX
core.excludesfile=/Users/rossi/.gitignore_global
difftool.sourcetree.cmd=opendiff "$LOCAL" "$REMOTE"
difftool.sourcetree.path=
mergetool.sourcetree.cmd=/Applications/SourceTree.app/Contents/
Resources/opendiff-w.sh "$LOCAL" "$REMOTE" -ancestor "$BASE" -
merge "$MERGED"
mergetool.sourcetree.trustexitcode=true
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
core.ignorecase=true



                                 23
Présentez-vous !

git config --global user.name “Rossi Oddet”
git config --global user.email rossi.oddet@jcertif.fr




                         24
git config --list
user.name=Rossi Oddet
user.email=rossi.oddet@jcertif.fr
core.excludesfile=/Users/rossi/.gitignore_global
difftool.sourcetree.cmd=opendiff "$LOCAL" "$REMOTE"
difftool.sourcetree.path=
mergetool.sourcetree.cmd=/Applications/SourceTree.app/Contents/
Resources/opendiff-w.sh "$LOCAL" "$REMOTE" -ancestor "$BASE" -
merge "$MERGED"
mergetool.sourcetree.trustexitcode=true
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
core.ignorecase=true



                                 25
TP 3 - Initialiser un projet


•   Décompresser le fichier jcertif-web-2012.zip

•   Se positionner dans le répertoire jcertif-web-2012

•   git init




                                    26
Cycle de vie d’un fichier




           27
TP 4 - Versionnez votre projet


Cas d’utilisation : versionner les fichiers du projet jcertif-web 2012




                                 28
git status
    # On branch master
    #
    # Initial commit
    #
    # Untracked files:
    # (use "git add <file>..." to include in what will be committed)
    #
    #	

 README.md
    #	

 pom.xml
    #	

 src/
    #	

 target/


Le répertoire “target” est un répertoire généré par
   Maven, nous ne souhaitons pas le versionner

                                  29
Créer un fichier .gitignore
                                .gitignore
 Lister les fichiers/
répertoires à ne pas   target
     versionner




                                 30
git status
# On branch master
#
# Initial commit
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
#	

 .gitignore
#	

 README.md
#	

 pom.xml
#	

 src/

   Le répertoire “target” n’apparait plus


                              31
git add .

Ajout de tous les fichiers à l’état “staged”
    => candidat au prochain commit




                    32
git status




    33
git commit -m “Ajout de toutes les
       ressources du projet”
    [master (root-commit) 9bd8c8a] Ajout de toutes les ressources du projet
     118 files changed, 7431 insertions(+)
     create mode 100644 .gitignore
     create mode 100644 README.md
     create mode 100644 pom.xml
     create mode 100644 src/main/java/com/jcertif/web/ihm/LocaleBean.java
     create mode 100644 src/main/java/com/jcertif/web/ihm/calendar/AgendaBean.java
     create mode 100644 src/main/java/com/jcertif/web/ihm/calendar/AgendaEvent.java
     create mode 100644 src/main/java/com/jcertif/web/ihm/calendar/AgendaLine.java
     create mode 100644 src/main/java/com/jcertif/web/ihm/connect/LoginBean.java
     create mode 100644 src/main/java/com/jcertif/web/ihm/connect/LogoutBean.java
     create mode 100644 src/main/java/com/jcertif/web/ihm/contact/ContactBean.java
                                          ...




                                          34
git log

commit 9bd8c8a990b56384619413ff8d898a809269b3a2
Author: Rossi Oddet <rossi.oddet@gmail.com>
Date: Wed Aug 22 22:20:35 2012 +0200

  Ajout de toutes les ressources du projet




                          35
Modifier .gitignore
                                        .gitignore
  Exclusion des fichiers    target
pouvant être générés par   .project
                           .settings
         Eclipse           .classpath




                                         36
git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
#	

 modified: .gitignore
#
no changes added to commit (use "git add" and/or "git commit -a")




                                    37
git commit -a -m “Exclusion des
       fichiers Eclipse”

            [master 22180e6] Exclusion des fichiers Eclipse
             1 file changed, 3 insertions(+)




   attention, commit automatique des fichiers modifiés
   les nouveaux fichiers ne sont pas ajoutés au commit

                                  38
git log
commit 22180e6fe8effc72e05e173c313037be76dafdae
Author: Rossi Oddet <rossi.oddet@gmail.com>
Date: Wed Aug 22 22:28:27 2012 +0200

  Exclusion des fichiers Eclipse

commit 9bd8c8a990b56384619413ff8d898a809269b3a2
Author: Rossi Oddet <rossi.oddet@gmail.com>
Date: Wed Aug 22 22:20:35 2012 +0200

  Ajout de toutes les ressources du projet




                          39
git status


# On branch master
nothing to commit (working directory clean)




                    40
Exemple de customisation git log
git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<
%an>%Creset' --abbrev-commit




                                       merci @rblancho
                                                  41
TP 5 - Oops ! Je me suis trompé


Objectif : voir comment se sortir d’une manipulation malheureuse




                               42
Cas 1 : Je n’aurai pas dû modifier
             ce fichier


                43
Modifier le fichier .gitignore
                                       .gitignore

                          target
                          .project
                          .settings
                          .classpath
Ajout du répertoire src   src




                                        44
git status

# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
#	

 modified: .gitignore
#
no changes added to commit (use "git add" and/or "git commit -a")




                                    45
git checkout .gitignore
                                       .gitignore

                          target
                          .project
                          .settings
                          .classpath
Retour à l’état initial




                                        46
git status


# On branch master
nothing to commit (working directory clean)




                    47
Cas 2 : le “add” de trop



           48
Modifier le fichier .gitignore
                                       .gitignore

                          target
                          .project
                          .settings
                          .classpath
Ajout du répertoire src   src




                                        49
git add .gitignore


Fichier à l’état “staged” => fera partie du prochain commit




                            50
git status

# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
#	

 modified: .gitignore
#




                     51
git reset HEAD .gitignore


       Unstaged changes after reset:
       M	

 .gitignore




                    52
git status

# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
#	

 modified: .gitignore
#
no changes added to commit (use "git add" and/or "git commit -a")




                                    53
Cas 3 : le commit de trop



            54
Modifier le fichier .gitignore
                                       .gitignore

                          target
                          .project
                          .settings
                          .classpath
Ajout du répertoire src   src




                                        55
git commit -a -m “Exclusion du
       répertoire src”

       [master 59a620a] Exclusion du répertoire src
        1 file changed, 1 insertion(+)




                            56
git log --pretty=oneline

59a620a8a78f6643b42df250ad02ffd903bf80e2 Exclusion du répertoire src
22180e6fe8effc72e05e173c313037be76dafdae Exclusion des fichiers Eclipse
9bd8c8a990b56384619413ff8d898a809269b3a2 Ajout de toutes les ressources du projet




                                        57
git reset --soft HEAD~1


Supprime le dernier commit, le fichier passe à l’état “staged”



   Seulement si le commit n’a pas été partagé avec un autre
                         dépôt Git


                             58
git status


2180e6fe8effc72e05e173c313037be76dafdae Exclusion des fichiers Eclipse
9bd8c8a990b56384619413ff8d898a809269b3a2 Ajout de toutes les ressources du projet




                                             59
git revert HEAD


Création d’un nouveau commit annulant l’effet du dernier commit



      Pratique lorsque le commit a été partagé avec un autre
                            dépôt Git


                               60
Cas 4 : j’ai oublié d’ajouter un
fichier dans mon dernier commit


                61
git log --stat
                                 commit 22180e6fe8effc72e05e173c313037be76dafdae
                                 Author: Rossi Oddet <rossi.oddet@gmail.com>
                                 Date: Wed Aug 22 22:28:27 2012 +0200

                                   Exclusion des fichiers Eclipse

dernier commit = 1 fichier        .gitignore | 3 +++
                                 1 file changed, 3 insertions(+)

                                 commit 9bd8c8a990b56384619413ff8d898a809269b3a2
                                 Author: Rossi Oddet <rossi.oddet@gmail.com>
                                 Date: Wed Aug 22 22:20:35 2012 +0200

                                   Ajout de toutes les ressources du projet

                                 .gitignore                                   | 1+
                                                                  ....

                                    62
Créer un fichier help.txt
               help.txt


       hello




               63
git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
#	

 modified: .gitignore
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
#	

 help.txt
no changes added to commit (use "git add" and/or "git commit -a")




                                    64
git add help.txt
        git commit --amend

Possibilité d’adapter le commentaire du précédent commit




                           65
git log --stat
                                 commit 7470d58dac24636f839250bbff934bac18e6f996
                                 Author: Rossi Oddet <rossi.oddet@gmail.com>
                                 Date: Wed Aug 22 22:28:27 2012 +0200

                                    Exclusion des fichiers Eclipse

                                  .gitignore | 3 +++
dernier commit = 2 fichiers        help.txt | 1 +
                                  2 files changed, 4 insertions(+)

                                 commit 9bd8c8a990b56384619413ff8d898a809269b3a2
                                 Author: Rossi Oddet <rossi.oddet@gmail.com>
                                 Date: Wed Aug 22 22:20:35 2012 +0200

                                   Ajout de toutes les ressources du projet

                                  .gitignore                                  | 1+

                                      66
TP 6 - Gérer les branches


   Objectif : Créer/manipuler des branches




                     67
git branch develop


 Création d’une branche develop




               68
git branch

La liste des branches existantes

                                    develop
                                   * master




                                               Le symbole * pour la branche courante


                                          69
Créer un fichier texte1.txt
                  texte1.txt


        texte 1




                   70
git add texte1.txt
git commit -m “Commit texte1.txt
        branche master”
            1 file changed, 1 insertion(+)
           create mode 100644 texte1.txt




                        71
git log --pretty:oneline

f7d65f859a04e16284e34edf1ad599c2966034ea Commit texte1.txt branche master
7470d58dac24636f839250bbff934bac18e6f996 Exclusion des fichiers Eclipse
9bd8c8a990b56384619413ff8d898a809269b3a2 Ajout de toutes les ressources du projet




                                        72
git checkout develop

     Abandon de la branche master
 Positionnement sur la branche develop




                  73
git branch

   * develop
     master




      74
git log --pretty:oneline


   7470d58dac24636f839250bbff934bac18e6f996 Exclusion des fichiers Eclipse
   9bd8c8a990b56384619413ff8d898a809269b3a2 Ajout de toutes les ressources du projet




Le fichier texte1.txt n’est pas présent et le commit fait
       précédemment est absent de la branche


                                  75
git merge master

   Updating 7470d58..f7d65f8
   Fast-forward
    texte1.txt | 1 +
    1 file changed, 1 insertion(+)
    create mode 100644 texte1.txt




                 76
git log --pretty=oneline


   f7d65f859a04e16284e34edf1ad599c2966034ea Commit texte1.txt branche master
   7470d58dac24636f839250bbff934bac18e6f996 Exclusion des fichiers Eclipse
   9bd8c8a990b56384619413ff8d898a809269b3a2 Ajout de toutes les ressources du projet




le fichier texte1.txt est désormais présent dans la branche develop


                                           77
TP 7 : Gérer les conflits entre les
            branches

Objectif : faire des modifications différentes d’un même fichier sur
plusieurs branches et reporter des modifications entre branches




                                78
Dans la branche develop modifier
       le fichier texte1.txt
                    texte1.txt


           texte develop




                       79
git commit -a -m “Texte1 develop”



                80
Dans la branche master modifier le
         fichier texte1.txt
                     texte1.txt


            texte master




                           81
git commit -a -m “Texte1 master”



               82
Objectif = Merge “develop” vers
           “master”


               83
git checkout master
 git merge develop

Auto-merging texte1.txt
CONFLICT (content): Merge conflict in texte1.txt
Automatic merge failed; fix conflicts and then commit the result.




                        Oops !


                              84
git status
# On branch master
# Unmerged paths:
# (use "git add/rm <file>..." as appropriate to mark resolution)
#
#	

 both modified:   texte1.txt
#
no changes added to commit (use "git add" and/or "git commit -a")




                               85
Ouvrir le fichier texte1.txt
                                           texte1.txt
                                     <<<<<<< HEAD
                                     texte master
Pas de panique, les symboles         =======
utilisés sont des “standards”        texte develop
                                     >>>>>>>
                                     develop




                                86
Pour résoudre le conflit, plusieurs
             choix

•   Modifier le fichier à la main en veillant à supprimer les chaines de
    caractères “<<<<<<< HEAD”, “=======”, “>>>>>>> develop”

•   Utiliser un outil de merge




                                     87
git mergetool
merge tool candidates: tortoisemerge emerge vimdiff
Merging:
texte1.txt

Normal merge conflict for 'texte1.txt':
 {local}: modified file
 {remote}: modified file
Hit return to start merge resolution tool (vimdiff):




                          88
Avec vimdiff




     89
Modifier le fichier texte1.txt

                  texte1.txt


         texte master develop




                     90
git add texte1.txt
git commit -m “Merge OK”

        [master 1eca022] Merge Ok




                   91
git log --pretty=oneline
1eca0225aebd35927c340214919597be173168c7 Merge Ok
3b40b1fcb2e4c1d5483818e06a0a4c5c6ae1eb97 Texte1 master
cbe96035ac64454ba53157e4d7fd57abfed60d88 Texte1 develop
f7d65f859a04e16284e34edf1ad599c2966034ea Commit texte1.txt branche master
7470d58dac24636f839250bbff934bac18e6f996 Exclusion des fichiers Eclipse
9bd8c8a990b56384619413ff8d898a809269b3a2 Ajout de toutes les ressources du projet



   L’historique du commit “Texte1 develop” est également
               récupéré sur la branche master


                                        92
TP 6 - Travailler avec des dépôts
              distants

Objectif : Récupérer/Partager des modifications d’un dépôt Git distant




                                 93
git clone https://github.com/
JCERTIFLab/jcertif-webapp.git

    Cloning into 'jcertif-webapp'...
    remote: Counting objects: 2201, done.
    remote: Compressing objects: 100% (938/938), done.
    remote: Total 2201 (delta 906), reused 2129 (delta 835)
    Receiving objects: 100% (2201/2201), 85.21 MiB | 1.07 MiB/s, done.
    Resolving deltas: 100% (906/906), done.




                                    94
Modifier le fichier README.md

                         README.md

Modifier du texte   jcertif-webapp 2012
                   ==============

                   Web Application :
                   http://www.jcertif.com




                                   95
git commit -a -m “Modif
     README.md”

       [master 5d3373c] Modif README.md
     1 file changed, 1 insertion(+), 1 deletion(-)




                         96
git log --pretty=oneline
5d3373c2106df3c782e1c2e5e8dc817f068dd4ac Modif README.md
a56a3e84c096a58df7f900e349f5e43d7ada5f1f Merge pull request #47 from roddet/develop
45f1374f7a31df3d38a2eebb0abb9e5aa1e985dc [SPEAKERS] Ajout de la possibilité d'utiliser les balises HTML pour les
bios.
2c098eb7d66de510a102b578fbd8d118d9da0ce2 [HOME] Modification du texte éditorial
ba3f7ae455f3b28d87ea3f9047c8d961a7a574e9 Merge pull request #46 from roddet/develop
153a72c6d2a07605c5833a835e5fc0b2efbd35fb [AGENDA] Suppression du libellé 'Salle' de l'entête des colonnes
pour éviter que de
8879d6e942b0a3f34b5104c70af61f39068bddeb Merge pull request #41 from roddet/develop
de3957d7833b8489c3eb039b862879ec55941e53 [AGENDA] Red color on mouse over




                                                       97
git remote -v

origin git://github.com/JCERTIFLab/jcertif-webapp.git (fetch)
origin git://github.com/JCERTIFLab/jcertif-webapp.git (push)




                             98
git remote add roddet https://
   github.com/roddet/jcertif-
           webapp.git
      Ajout d’un dépôt distant “roddet”




                     99
git remote

   origin
   roddet




      100
git push origin master

          Dépôt   Branche


          101
git pull



   102
TP 7 - Git & Eclipse


        Démo




         103
Merci !



   104

Contenu connexe

Tendances

Présentation du versioning avec Git
Présentation du versioning avec GitPrésentation du versioning avec Git
Présentation du versioning avec Git
msadouni
 
Tutoriel GIT
Tutoriel GITTutoriel GIT
Tutoriel GIT
Francois ANDRE
 
Les bases de git
Les bases de gitLes bases de git
Les bases de git
Pierre Sudron
 
Automatisez vos tâches répétitives avec Grunt (Blend 2013)
Automatisez vos tâches répétitives avec Grunt (Blend 2013)Automatisez vos tâches répétitives avec Grunt (Blend 2013)
Automatisez vos tâches répétitives avec Grunt (Blend 2013)
Corinne Schillinger
 
Git et les systèmes de gestion de versions
Git et les systèmes de gestion de versionsGit et les systèmes de gestion de versions
Git et les systèmes de gestion de versions
Alice Loeser
 
Versioning avec Git
Versioning avec GitVersioning avec Git
Versioning avec Git
Jean-Baptiste Vigneron
 
Atelier Git + GitHub
Atelier Git + GitHubAtelier Git + GitHub
Atelier Git + GitHub
spamaert
 
Présentation Git & GitHub
Présentation Git & GitHubPrésentation Git & GitHub
Présentation Git & GitHub
Thibault Vlacich
 
Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...
ECAM Brussels Engineering School
 
Présentation de git
Présentation de gitPrésentation de git
Présentation de git
Julien Blin
 
Git : Deux écoles de pensées, merge vs rebase
Git : Deux écoles de pensées, merge vs rebaseGit : Deux écoles de pensées, merge vs rebase
Git : Deux écoles de pensées, merge vs rebase
jcbaudier
 
Migration d'une base de code subversion vers git
Migration d'une base de code subversion vers gitMigration d'une base de code subversion vers git
Migration d'une base de code subversion vers git
Geoffrey Bachelet
 
Git pratique
Git pratiqueGit pratique
Git pratique
quicky_osm
 
Travailler avec git et eclipse
Travailler avec git et eclipseTravailler avec git et eclipse
Travailler avec git et eclipse
Francois ANDRE
 
Pytong2015
Pytong2015Pytong2015
Introduction à git
Introduction à gitIntroduction à git
Introduction à git
Yann Sionneau
 
GitHub - Présentation
GitHub - PrésentationGitHub - Présentation
GitHub - Présentation
David RIEHL
 
Outils de gestion de projets
Outils de gestion de projetsOutils de gestion de projets
Outils de gestion de projets
ECAM Brussels Engineering School
 

Tendances (20)

Présentation du versioning avec Git
Présentation du versioning avec GitPrésentation du versioning avec Git
Présentation du versioning avec Git
 
Tutoriel GIT
Tutoriel GITTutoriel GIT
Tutoriel GIT
 
Les bases de git
Les bases de gitLes bases de git
Les bases de git
 
Automatisez vos tâches répétitives avec Grunt (Blend 2013)
Automatisez vos tâches répétitives avec Grunt (Blend 2013)Automatisez vos tâches répétitives avec Grunt (Blend 2013)
Automatisez vos tâches répétitives avec Grunt (Blend 2013)
 
Git et les systèmes de gestion de versions
Git et les systèmes de gestion de versionsGit et les systèmes de gestion de versions
Git et les systèmes de gestion de versions
 
Versioning avec Git
Versioning avec GitVersioning avec Git
Versioning avec Git
 
Atelier Git + GitHub
Atelier Git + GitHubAtelier Git + GitHub
Atelier Git + GitHub
 
Présentation Git & GitHub
Présentation Git & GitHubPrésentation Git & GitHub
Présentation Git & GitHub
 
Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...
 
Présentation de git
Présentation de gitPrésentation de git
Présentation de git
 
Git : Deux écoles de pensées, merge vs rebase
Git : Deux écoles de pensées, merge vs rebaseGit : Deux écoles de pensées, merge vs rebase
Git : Deux écoles de pensées, merge vs rebase
 
Migration d'une base de code subversion vers git
Migration d'une base de code subversion vers gitMigration d'une base de code subversion vers git
Migration d'une base de code subversion vers git
 
Git pratique
Git pratiqueGit pratique
Git pratique
 
Travailler avec git et eclipse
Travailler avec git et eclipseTravailler avec git et eclipse
Travailler avec git et eclipse
 
Gradle_LyonJUG
Gradle_LyonJUGGradle_LyonJUG
Gradle_LyonJUG
 
Pytong2015
Pytong2015Pytong2015
Pytong2015
 
Introduction à git
Introduction à gitIntroduction à git
Introduction à git
 
GitHub - Présentation
GitHub - PrésentationGitHub - Présentation
GitHub - Présentation
 
Outils de gestion de projets
Outils de gestion de projetsOutils de gestion de projets
Outils de gestion de projets
 
Gradle_BordeauxJUG
Gradle_BordeauxJUGGradle_BordeauxJUG
Gradle_BordeauxJUG
 

En vedette

Nio sur Netty par Mouhcine Moulou - 3 avril 2014
Nio sur Netty par Mouhcine Moulou - 3 avril 2014Nio sur Netty par Mouhcine Moulou - 3 avril 2014
Nio sur Netty par Mouhcine Moulou - 3 avril 2014
SOAT
 
Ajax en Java - GTI780 & MTI780 - ETS - A09
Ajax en Java - GTI780 & MTI780 - ETS - A09Ajax en Java - GTI780 & MTI780 - ETS - A09
Ajax en Java - GTI780 & MTI780 - ETS - A09
Claude Coulombe
 
BreizhCamp 2015 - D3js par l'exemple
BreizhCamp 2015 - D3js par l'exempleBreizhCamp 2015 - D3js par l'exemple
BreizhCamp 2015 - D3js par l'exemple
Rossi Oddet
 
Spring 3.0
Spring 3.0Spring 3.0
Ippevent Young Blood - Injection de dépendance et type safe binding avec spring
Ippevent Young Blood - Injection de dépendance et type safe binding avec springIppevent Young Blood - Injection de dépendance et type safe binding avec spring
Ippevent Young Blood - Injection de dépendance et type safe binding avec spring
Julien Sadaoui
 
Breizhjug spring batch 2011
Breizhjug spring batch 2011Breizhjug spring batch 2011
Breizhjug spring batch 2011
Olivier BAZOUD
 
ASP.Net Web API - Léonard Labat (18 février 2014)
ASP.Net Web API - Léonard Labat (18 février 2014)ASP.Net Web API - Léonard Labat (18 février 2014)
ASP.Net Web API - Léonard Labat (18 février 2014)
SOAT
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
Arnaud Héritier
 
Présentation spring data Matthieu Briend
Présentation spring data  Matthieu BriendPrésentation spring data  Matthieu Briend
Présentation spring data Matthieu Briend
SOAT
 
Amazon Web Service par Bertrand Lehurt - 11 mars 2014
Amazon Web Service par Bertrand Lehurt - 11 mars 2014Amazon Web Service par Bertrand Lehurt - 11 mars 2014
Amazon Web Service par Bertrand Lehurt - 11 mars 2014
SOAT
 
Jpa(1)
Jpa(1)Jpa(1)
Jpa(1)
Assad Lion
 
Introduction marketing-industriel
Introduction marketing-industrielIntroduction marketing-industriel
Introduction marketing-industriel
Mémoire Mémoire
 
Jpa Spring Hibernate
Jpa Spring HibernateJpa Spring Hibernate
Jpa Spring Hibernate
zaheryamak
 
Apache Maven 3
Apache Maven 3Apache Maven 3
Apache Maven 3
Maxime Gréau
 
JCertif 2012 : Maven par la pratique
JCertif 2012 : Maven par la pratiqueJCertif 2012 : Maven par la pratique
JCertif 2012 : Maven par la pratique
Rossi Oddet
 
Angular JS - Paterne Gaye-Guingnido
Angular JS - Paterne Gaye-Guingnido Angular JS - Paterne Gaye-Guingnido
Angular JS - Paterne Gaye-Guingnido
SOAT
 
Workshop Spring - Session 1 - L'offre Spring et les bases
Workshop Spring  - Session 1 - L'offre Spring et les basesWorkshop Spring  - Session 1 - L'offre Spring et les bases
Workshop Spring - Session 1 - L'offre Spring et les bases
Antoine Rey
 
L'entreprise libérée
L'entreprise libéréeL'entreprise libérée
L'entreprise libérée
SOAT
 

En vedette (20)

Nio sur Netty par Mouhcine Moulou - 3 avril 2014
Nio sur Netty par Mouhcine Moulou - 3 avril 2014Nio sur Netty par Mouhcine Moulou - 3 avril 2014
Nio sur Netty par Mouhcine Moulou - 3 avril 2014
 
Ajax en Java - GTI780 & MTI780 - ETS - A09
Ajax en Java - GTI780 & MTI780 - ETS - A09Ajax en Java - GTI780 & MTI780 - ETS - A09
Ajax en Java - GTI780 & MTI780 - ETS - A09
 
BreizhCamp 2015 - D3js par l'exemple
BreizhCamp 2015 - D3js par l'exempleBreizhCamp 2015 - D3js par l'exemple
BreizhCamp 2015 - D3js par l'exemple
 
Spring 3.0
Spring 3.0Spring 3.0
Spring 3.0
 
Springioc
SpringiocSpringioc
Springioc
 
Ippevent Young Blood - Injection de dépendance et type safe binding avec spring
Ippevent Young Blood - Injection de dépendance et type safe binding avec springIppevent Young Blood - Injection de dépendance et type safe binding avec spring
Ippevent Young Blood - Injection de dépendance et type safe binding avec spring
 
Breizhjug spring batch 2011
Breizhjug spring batch 2011Breizhjug spring batch 2011
Breizhjug spring batch 2011
 
Tuto spring
Tuto springTuto spring
Tuto spring
 
ASP.Net Web API - Léonard Labat (18 février 2014)
ASP.Net Web API - Léonard Labat (18 février 2014)ASP.Net Web API - Léonard Labat (18 février 2014)
ASP.Net Web API - Léonard Labat (18 février 2014)
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
 
Présentation spring data Matthieu Briend
Présentation spring data  Matthieu BriendPrésentation spring data  Matthieu Briend
Présentation spring data Matthieu Briend
 
Amazon Web Service par Bertrand Lehurt - 11 mars 2014
Amazon Web Service par Bertrand Lehurt - 11 mars 2014Amazon Web Service par Bertrand Lehurt - 11 mars 2014
Amazon Web Service par Bertrand Lehurt - 11 mars 2014
 
Jpa(1)
Jpa(1)Jpa(1)
Jpa(1)
 
Introduction marketing-industriel
Introduction marketing-industrielIntroduction marketing-industriel
Introduction marketing-industriel
 
Jpa Spring Hibernate
Jpa Spring HibernateJpa Spring Hibernate
Jpa Spring Hibernate
 
Apache Maven 3
Apache Maven 3Apache Maven 3
Apache Maven 3
 
JCertif 2012 : Maven par la pratique
JCertif 2012 : Maven par la pratiqueJCertif 2012 : Maven par la pratique
JCertif 2012 : Maven par la pratique
 
Angular JS - Paterne Gaye-Guingnido
Angular JS - Paterne Gaye-Guingnido Angular JS - Paterne Gaye-Guingnido
Angular JS - Paterne Gaye-Guingnido
 
Workshop Spring - Session 1 - L'offre Spring et les bases
Workshop Spring  - Session 1 - L'offre Spring et les basesWorkshop Spring  - Session 1 - L'offre Spring et les bases
Workshop Spring - Session 1 - L'offre Spring et les bases
 
L'entreprise libérée
L'entreprise libéréeL'entreprise libérée
L'entreprise libérée
 

Similaire à JCertif 2012 : Git par la pratique

3_SCM_Git.pdf
3_SCM_Git.pdf3_SCM_Git.pdf
3_SCM_Git.pdf
NourFrioui
 
Initiation à Git, GitHub2.pdf
Initiation à Git, GitHub2.pdfInitiation à Git, GitHub2.pdf
Initiation à Git, GitHub2.pdf
mouad55
 
les commandes Git que vous devez absolument connaitre!.pdf
les commandes Git que vous devez absolument connaitre!.pdfles commandes Git que vous devez absolument connaitre!.pdf
les commandes Git que vous devez absolument connaitre!.pdf
SimpleLearn1
 
Git
GitGit
Drupalcamp Nantes - Présentation GIT
Drupalcamp Nantes - Présentation GITDrupalcamp Nantes - Présentation GIT
Drupalcamp Nantes - Présentation GIT
Artusamak
 
Introduction à git.pdf
Introduction à git.pdfIntroduction à git.pdf
Introduction à git.pdf
badrfathallah2
 
Git pratique
Git pratiqueGit pratique
Git pratique
quicky_osm
 
Débuter avec Git & github
Débuter avec Git & githubDébuter avec Git & github
Débuter avec Git & github
Monoem Youneb
 
git-cmds-base.pdf
git-cmds-base.pdfgit-cmds-base.pdf
git-cmds-base.pdf
ChaimaTahiri1
 
REX - Passage de CVS à Git
REX - Passage de CVS à GitREX - Passage de CVS à Git
REX - Passage de CVS à Git
Pierre Templier
 
GIT & Future Branching-0d86ea39-71ad-4a19-940c-c10be7c33b08-9feea918-d69a-47e...
GIT & Future Branching-0d86ea39-71ad-4a19-940c-c10be7c33b08-9feea918-d69a-47e...GIT & Future Branching-0d86ea39-71ad-4a19-940c-c10be7c33b08-9feea918-d69a-47e...
GIT & Future Branching-0d86ea39-71ad-4a19-940c-c10be7c33b08-9feea918-d69a-47e...
akramalidrissi1
 
Git and Github.pptx
Git and Github.pptxGit and Github.pptx
Git and Github.pptx
nnomokoarmel20
 
Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipeline
Nicolas wallerand
 
Git vs SVN
Git vs SVNGit vs SVN
Git vs SVN
neuros
 
Brown Bag Lunch Tours @ CEFIM - Git pour tous
Brown Bag Lunch Tours @ CEFIM - Git pour tousBrown Bag Lunch Tours @ CEFIM - Git pour tous
Brown Bag Lunch Tours @ CEFIM - Git pour tous
Cedric Gatay
 
SVN to GitHUb
SVN to GitHUbSVN to GitHUb
GIT training - basic for software projects
GIT training - basic for software projectsGIT training - basic for software projects
GIT training - basic for software projects
Thierry Gayet
 
Le système de versioning git
Le système de versioning gitLe système de versioning git
Le système de versioning git
Nassim Bahri
 
Au secours, mon chef m'a demandé de passer au DevOps
Au secours, mon chef m'a demandé de passer au DevOpsAu secours, mon chef m'a demandé de passer au DevOps
Au secours, mon chef m'a demandé de passer au DevOps
antony_guilloteau
 
GIT Fundamentals
GIT FundamentalsGIT Fundamentals
GIT Fundamentals
Abderrazak BOUADMA
 

Similaire à JCertif 2012 : Git par la pratique (20)

3_SCM_Git.pdf
3_SCM_Git.pdf3_SCM_Git.pdf
3_SCM_Git.pdf
 
Initiation à Git, GitHub2.pdf
Initiation à Git, GitHub2.pdfInitiation à Git, GitHub2.pdf
Initiation à Git, GitHub2.pdf
 
les commandes Git que vous devez absolument connaitre!.pdf
les commandes Git que vous devez absolument connaitre!.pdfles commandes Git que vous devez absolument connaitre!.pdf
les commandes Git que vous devez absolument connaitre!.pdf
 
Git
GitGit
Git
 
Drupalcamp Nantes - Présentation GIT
Drupalcamp Nantes - Présentation GITDrupalcamp Nantes - Présentation GIT
Drupalcamp Nantes - Présentation GIT
 
Introduction à git.pdf
Introduction à git.pdfIntroduction à git.pdf
Introduction à git.pdf
 
Git pratique
Git pratiqueGit pratique
Git pratique
 
Débuter avec Git & github
Débuter avec Git & githubDébuter avec Git & github
Débuter avec Git & github
 
git-cmds-base.pdf
git-cmds-base.pdfgit-cmds-base.pdf
git-cmds-base.pdf
 
REX - Passage de CVS à Git
REX - Passage de CVS à GitREX - Passage de CVS à Git
REX - Passage de CVS à Git
 
GIT & Future Branching-0d86ea39-71ad-4a19-940c-c10be7c33b08-9feea918-d69a-47e...
GIT & Future Branching-0d86ea39-71ad-4a19-940c-c10be7c33b08-9feea918-d69a-47e...GIT & Future Branching-0d86ea39-71ad-4a19-940c-c10be7c33b08-9feea918-d69a-47e...
GIT & Future Branching-0d86ea39-71ad-4a19-940c-c10be7c33b08-9feea918-d69a-47e...
 
Git and Github.pptx
Git and Github.pptxGit and Github.pptx
Git and Github.pptx
 
Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipeline
 
Git vs SVN
Git vs SVNGit vs SVN
Git vs SVN
 
Brown Bag Lunch Tours @ CEFIM - Git pour tous
Brown Bag Lunch Tours @ CEFIM - Git pour tousBrown Bag Lunch Tours @ CEFIM - Git pour tous
Brown Bag Lunch Tours @ CEFIM - Git pour tous
 
SVN to GitHUb
SVN to GitHUbSVN to GitHUb
SVN to GitHUb
 
GIT training - basic for software projects
GIT training - basic for software projectsGIT training - basic for software projects
GIT training - basic for software projects
 
Le système de versioning git
Le système de versioning gitLe système de versioning git
Le système de versioning git
 
Au secours, mon chef m'a demandé de passer au DevOps
Au secours, mon chef m'a demandé de passer au DevOpsAu secours, mon chef m'a demandé de passer au DevOps
Au secours, mon chef m'a demandé de passer au DevOps
 
GIT Fundamentals
GIT FundamentalsGIT Fundamentals
GIT Fundamentals
 

Plus de Rossi Oddet

JCertif Tunisie 2015 - Le Web sur Mobile, Faisons le point !
JCertif Tunisie 2015 - Le Web sur Mobile, Faisons le point !JCertif Tunisie 2015 - Le Web sur Mobile, Faisons le point !
JCertif Tunisie 2015 - Le Web sur Mobile, Faisons le point !
Rossi Oddet
 
DevFest Nantes 2014 - Keynote - GTD (Getting Things Done)
DevFest Nantes 2014 - Keynote - GTD (Getting Things Done)DevFest Nantes 2014 - Keynote - GTD (Getting Things Done)
DevFest Nantes 2014 - Keynote - GTD (Getting Things Done)
Rossi Oddet
 
Introduction à Angularjs
Introduction à AngularjsIntroduction à Angularjs
Introduction à Angularjs
Rossi Oddet
 
JCertif 2014 - Techniques & Outils de Productivité
JCertif 2014 - Techniques & Outils de ProductivitéJCertif 2014 - Techniques & Outils de Productivité
JCertif 2014 - Techniques & Outils de Productivité
Rossi Oddet
 
BreizhCamp 2014 - Voteriez-vous pour un web déconnecté ?
BreizhCamp 2014 - Voteriez-vous pour un web déconnecté ?BreizhCamp 2014 - Voteriez-vous pour un web déconnecté ?
BreizhCamp 2014 - Voteriez-vous pour un web déconnecté ?
Rossi Oddet
 
BreizhCamp 2014 - Ionic in Action (Tools In Action)
BreizhCamp 2014 - Ionic in Action (Tools In Action)BreizhCamp 2014 - Ionic in Action (Tools In Action)
BreizhCamp 2014 - Ionic in Action (Tools In Action)
Rossi Oddet
 
JCertif 2013 - Vers un web moderne pour l'Afrique ?
JCertif 2013 - Vers un web moderne pour l'Afrique ?JCertif 2013 - Vers un web moderne pour l'Afrique ?
JCertif 2013 - Vers un web moderne pour l'Afrique ?
Rossi Oddet
 
JCertif 2012 : Integration continue avec Jenkins
JCertif 2012 : Integration continue avec JenkinsJCertif 2012 : Integration continue avec Jenkins
JCertif 2012 : Integration continue avec Jenkins
Rossi Oddet
 
JCertif 2012 : Le lab
JCertif 2012 : Le labJCertif 2012 : Le lab
JCertif 2012 : Le lab
Rossi Oddet
 
JCertif 2012 : Scrum avec Icescrum
JCertif 2012 : Scrum avec IcescrumJCertif 2012 : Scrum avec Icescrum
JCertif 2012 : Scrum avec Icescrum
Rossi Oddet
 

Plus de Rossi Oddet (10)

JCertif Tunisie 2015 - Le Web sur Mobile, Faisons le point !
JCertif Tunisie 2015 - Le Web sur Mobile, Faisons le point !JCertif Tunisie 2015 - Le Web sur Mobile, Faisons le point !
JCertif Tunisie 2015 - Le Web sur Mobile, Faisons le point !
 
DevFest Nantes 2014 - Keynote - GTD (Getting Things Done)
DevFest Nantes 2014 - Keynote - GTD (Getting Things Done)DevFest Nantes 2014 - Keynote - GTD (Getting Things Done)
DevFest Nantes 2014 - Keynote - GTD (Getting Things Done)
 
Introduction à Angularjs
Introduction à AngularjsIntroduction à Angularjs
Introduction à Angularjs
 
JCertif 2014 - Techniques & Outils de Productivité
JCertif 2014 - Techniques & Outils de ProductivitéJCertif 2014 - Techniques & Outils de Productivité
JCertif 2014 - Techniques & Outils de Productivité
 
BreizhCamp 2014 - Voteriez-vous pour un web déconnecté ?
BreizhCamp 2014 - Voteriez-vous pour un web déconnecté ?BreizhCamp 2014 - Voteriez-vous pour un web déconnecté ?
BreizhCamp 2014 - Voteriez-vous pour un web déconnecté ?
 
BreizhCamp 2014 - Ionic in Action (Tools In Action)
BreizhCamp 2014 - Ionic in Action (Tools In Action)BreizhCamp 2014 - Ionic in Action (Tools In Action)
BreizhCamp 2014 - Ionic in Action (Tools In Action)
 
JCertif 2013 - Vers un web moderne pour l'Afrique ?
JCertif 2013 - Vers un web moderne pour l'Afrique ?JCertif 2013 - Vers un web moderne pour l'Afrique ?
JCertif 2013 - Vers un web moderne pour l'Afrique ?
 
JCertif 2012 : Integration continue avec Jenkins
JCertif 2012 : Integration continue avec JenkinsJCertif 2012 : Integration continue avec Jenkins
JCertif 2012 : Integration continue avec Jenkins
 
JCertif 2012 : Le lab
JCertif 2012 : Le labJCertif 2012 : Le lab
JCertif 2012 : Le lab
 
JCertif 2012 : Scrum avec Icescrum
JCertif 2012 : Scrum avec IcescrumJCertif 2012 : Scrum avec Icescrum
JCertif 2012 : Scrum avec Icescrum
 

JCertif 2012 : Git par la pratique

  • 2. Qui suis-je ? Rossi Oddet Consultant IT chez SQLI Manager JCertif Lab Twitter : @rossioddet Blog: http://blog.roddet.com 2
  • 4. Un outil de gestion de version pour vos fichiers 4
  • 5. Oui pour votre code source aussi ! 5
  • 7. Pour comprendre, un peu d’histoire 7
  • 8. Le début de la gestion de versions = tout en local 8
  • 9. Pendant longtemps, tout centralisé 9
  • 12. => Plus besoin du serveur pour voir l’historique d’un fichier 12
  • 13. Imaginez les performances sans accès réseau 13
  • 17. Synchronisez ! quand votre serveur est disponible 17
  • 19. Pas grave vous avez TOUT en local 19
  • 21. TP 1 - Installer Git • Rendez-vous à la page de téléchargement : http://git-scm.com/ download • Suivez les instructions suivant votre plateforme (Windows, Linux, Mac) • Vérification de l’installation : git --version 21
  • 22. TP 2 - A propos de vous Objectif : Paramétrage initial 22
  • 23. git config --list user.name=XXXX user.email=XXXXX core.excludesfile=/Users/rossi/.gitignore_global difftool.sourcetree.cmd=opendiff "$LOCAL" "$REMOTE" difftool.sourcetree.path= mergetool.sourcetree.cmd=/Applications/SourceTree.app/Contents/ Resources/opendiff-w.sh "$LOCAL" "$REMOTE" -ancestor "$BASE" - merge "$MERGED" mergetool.sourcetree.trustexitcode=true core.repositoryformatversion=0 core.filemode=true core.bare=false core.logallrefupdates=true core.ignorecase=true 23
  • 24. Présentez-vous ! git config --global user.name “Rossi Oddet” git config --global user.email rossi.oddet@jcertif.fr 24
  • 25. git config --list user.name=Rossi Oddet user.email=rossi.oddet@jcertif.fr core.excludesfile=/Users/rossi/.gitignore_global difftool.sourcetree.cmd=opendiff "$LOCAL" "$REMOTE" difftool.sourcetree.path= mergetool.sourcetree.cmd=/Applications/SourceTree.app/Contents/ Resources/opendiff-w.sh "$LOCAL" "$REMOTE" -ancestor "$BASE" - merge "$MERGED" mergetool.sourcetree.trustexitcode=true core.repositoryformatversion=0 core.filemode=true core.bare=false core.logallrefupdates=true core.ignorecase=true 25
  • 26. TP 3 - Initialiser un projet • Décompresser le fichier jcertif-web-2012.zip • Se positionner dans le répertoire jcertif-web-2012 • git init 26
  • 27. Cycle de vie d’un fichier 27
  • 28. TP 4 - Versionnez votre projet Cas d’utilisation : versionner les fichiers du projet jcertif-web 2012 28
  • 29. git status # On branch master # # Initial commit # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # README.md # pom.xml # src/ # target/ Le répertoire “target” est un répertoire généré par Maven, nous ne souhaitons pas le versionner 29
  • 30. Créer un fichier .gitignore .gitignore Lister les fichiers/ répertoires à ne pas target versionner 30
  • 31. git status # On branch master # # Initial commit # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # .gitignore # README.md # pom.xml # src/ Le répertoire “target” n’apparait plus 31
  • 32. git add . Ajout de tous les fichiers à l’état “staged” => candidat au prochain commit 32
  • 34. git commit -m “Ajout de toutes les ressources du projet” [master (root-commit) 9bd8c8a] Ajout de toutes les ressources du projet 118 files changed, 7431 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 pom.xml create mode 100644 src/main/java/com/jcertif/web/ihm/LocaleBean.java create mode 100644 src/main/java/com/jcertif/web/ihm/calendar/AgendaBean.java create mode 100644 src/main/java/com/jcertif/web/ihm/calendar/AgendaEvent.java create mode 100644 src/main/java/com/jcertif/web/ihm/calendar/AgendaLine.java create mode 100644 src/main/java/com/jcertif/web/ihm/connect/LoginBean.java create mode 100644 src/main/java/com/jcertif/web/ihm/connect/LogoutBean.java create mode 100644 src/main/java/com/jcertif/web/ihm/contact/ContactBean.java ... 34
  • 35. git log commit 9bd8c8a990b56384619413ff8d898a809269b3a2 Author: Rossi Oddet <rossi.oddet@gmail.com> Date: Wed Aug 22 22:20:35 2012 +0200 Ajout de toutes les ressources du projet 35
  • 36. Modifier .gitignore .gitignore Exclusion des fichiers target pouvant être générés par .project .settings Eclipse .classpath 36
  • 37. git status # On branch master # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: .gitignore # no changes added to commit (use "git add" and/or "git commit -a") 37
  • 38. git commit -a -m “Exclusion des fichiers Eclipse” [master 22180e6] Exclusion des fichiers Eclipse 1 file changed, 3 insertions(+) attention, commit automatique des fichiers modifiés les nouveaux fichiers ne sont pas ajoutés au commit 38
  • 39. git log commit 22180e6fe8effc72e05e173c313037be76dafdae Author: Rossi Oddet <rossi.oddet@gmail.com> Date: Wed Aug 22 22:28:27 2012 +0200 Exclusion des fichiers Eclipse commit 9bd8c8a990b56384619413ff8d898a809269b3a2 Author: Rossi Oddet <rossi.oddet@gmail.com> Date: Wed Aug 22 22:20:35 2012 +0200 Ajout de toutes les ressources du projet 39
  • 40. git status # On branch master nothing to commit (working directory clean) 40
  • 41. Exemple de customisation git log git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)< %an>%Creset' --abbrev-commit merci @rblancho 41
  • 42. TP 5 - Oops ! Je me suis trompé Objectif : voir comment se sortir d’une manipulation malheureuse 42
  • 43. Cas 1 : Je n’aurai pas dû modifier ce fichier 43
  • 44. Modifier le fichier .gitignore .gitignore target .project .settings .classpath Ajout du répertoire src src 44
  • 45. git status # On branch master # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: .gitignore # no changes added to commit (use "git add" and/or "git commit -a") 45
  • 46. git checkout .gitignore .gitignore target .project .settings .classpath Retour à l’état initial 46
  • 47. git status # On branch master nothing to commit (working directory clean) 47
  • 48. Cas 2 : le “add” de trop 48
  • 49. Modifier le fichier .gitignore .gitignore target .project .settings .classpath Ajout du répertoire src src 49
  • 50. git add .gitignore Fichier à l’état “staged” => fera partie du prochain commit 50
  • 51. git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: .gitignore # 51
  • 52. git reset HEAD .gitignore Unstaged changes after reset: M .gitignore 52
  • 53. git status # On branch master # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: .gitignore # no changes added to commit (use "git add" and/or "git commit -a") 53
  • 54. Cas 3 : le commit de trop 54
  • 55. Modifier le fichier .gitignore .gitignore target .project .settings .classpath Ajout du répertoire src src 55
  • 56. git commit -a -m “Exclusion du répertoire src” [master 59a620a] Exclusion du répertoire src 1 file changed, 1 insertion(+) 56
  • 57. git log --pretty=oneline 59a620a8a78f6643b42df250ad02ffd903bf80e2 Exclusion du répertoire src 22180e6fe8effc72e05e173c313037be76dafdae Exclusion des fichiers Eclipse 9bd8c8a990b56384619413ff8d898a809269b3a2 Ajout de toutes les ressources du projet 57
  • 58. git reset --soft HEAD~1 Supprime le dernier commit, le fichier passe à l’état “staged” Seulement si le commit n’a pas été partagé avec un autre dépôt Git 58
  • 59. git status 2180e6fe8effc72e05e173c313037be76dafdae Exclusion des fichiers Eclipse 9bd8c8a990b56384619413ff8d898a809269b3a2 Ajout de toutes les ressources du projet 59
  • 60. git revert HEAD Création d’un nouveau commit annulant l’effet du dernier commit Pratique lorsque le commit a été partagé avec un autre dépôt Git 60
  • 61. Cas 4 : j’ai oublié d’ajouter un fichier dans mon dernier commit 61
  • 62. git log --stat commit 22180e6fe8effc72e05e173c313037be76dafdae Author: Rossi Oddet <rossi.oddet@gmail.com> Date: Wed Aug 22 22:28:27 2012 +0200 Exclusion des fichiers Eclipse dernier commit = 1 fichier .gitignore | 3 +++ 1 file changed, 3 insertions(+) commit 9bd8c8a990b56384619413ff8d898a809269b3a2 Author: Rossi Oddet <rossi.oddet@gmail.com> Date: Wed Aug 22 22:20:35 2012 +0200 Ajout de toutes les ressources du projet .gitignore | 1+ .... 62
  • 63. Créer un fichier help.txt help.txt hello 63
  • 64. git status # On branch master # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: .gitignore # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # help.txt no changes added to commit (use "git add" and/or "git commit -a") 64
  • 65. git add help.txt git commit --amend Possibilité d’adapter le commentaire du précédent commit 65
  • 66. git log --stat commit 7470d58dac24636f839250bbff934bac18e6f996 Author: Rossi Oddet <rossi.oddet@gmail.com> Date: Wed Aug 22 22:28:27 2012 +0200 Exclusion des fichiers Eclipse .gitignore | 3 +++ dernier commit = 2 fichiers help.txt | 1 + 2 files changed, 4 insertions(+) commit 9bd8c8a990b56384619413ff8d898a809269b3a2 Author: Rossi Oddet <rossi.oddet@gmail.com> Date: Wed Aug 22 22:20:35 2012 +0200 Ajout de toutes les ressources du projet .gitignore | 1+ 66
  • 67. TP 6 - Gérer les branches Objectif : Créer/manipuler des branches 67
  • 68. git branch develop Création d’une branche develop 68
  • 69. git branch La liste des branches existantes develop * master Le symbole * pour la branche courante 69
  • 70. Créer un fichier texte1.txt texte1.txt texte 1 70
  • 71. git add texte1.txt git commit -m “Commit texte1.txt branche master” 1 file changed, 1 insertion(+) create mode 100644 texte1.txt 71
  • 72. git log --pretty:oneline f7d65f859a04e16284e34edf1ad599c2966034ea Commit texte1.txt branche master 7470d58dac24636f839250bbff934bac18e6f996 Exclusion des fichiers Eclipse 9bd8c8a990b56384619413ff8d898a809269b3a2 Ajout de toutes les ressources du projet 72
  • 73. git checkout develop Abandon de la branche master Positionnement sur la branche develop 73
  • 74. git branch * develop master 74
  • 75. git log --pretty:oneline 7470d58dac24636f839250bbff934bac18e6f996 Exclusion des fichiers Eclipse 9bd8c8a990b56384619413ff8d898a809269b3a2 Ajout de toutes les ressources du projet Le fichier texte1.txt n’est pas présent et le commit fait précédemment est absent de la branche 75
  • 76. git merge master Updating 7470d58..f7d65f8 Fast-forward texte1.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 texte1.txt 76
  • 77. git log --pretty=oneline f7d65f859a04e16284e34edf1ad599c2966034ea Commit texte1.txt branche master 7470d58dac24636f839250bbff934bac18e6f996 Exclusion des fichiers Eclipse 9bd8c8a990b56384619413ff8d898a809269b3a2 Ajout de toutes les ressources du projet le fichier texte1.txt est désormais présent dans la branche develop 77
  • 78. TP 7 : Gérer les conflits entre les branches Objectif : faire des modifications différentes d’un même fichier sur plusieurs branches et reporter des modifications entre branches 78
  • 79. Dans la branche develop modifier le fichier texte1.txt texte1.txt texte develop 79
  • 80. git commit -a -m “Texte1 develop” 80
  • 81. Dans la branche master modifier le fichier texte1.txt texte1.txt texte master 81
  • 82. git commit -a -m “Texte1 master” 82
  • 83. Objectif = Merge “develop” vers “master” 83
  • 84. git checkout master git merge develop Auto-merging texte1.txt CONFLICT (content): Merge conflict in texte1.txt Automatic merge failed; fix conflicts and then commit the result. Oops ! 84
  • 85. git status # On branch master # Unmerged paths: # (use "git add/rm <file>..." as appropriate to mark resolution) # # both modified: texte1.txt # no changes added to commit (use "git add" and/or "git commit -a") 85
  • 86. Ouvrir le fichier texte1.txt texte1.txt <<<<<<< HEAD texte master Pas de panique, les symboles ======= utilisés sont des “standards” texte develop >>>>>>> develop 86
  • 87. Pour résoudre le conflit, plusieurs choix • Modifier le fichier à la main en veillant à supprimer les chaines de caractères “<<<<<<< HEAD”, “=======”, “>>>>>>> develop” • Utiliser un outil de merge 87
  • 88. git mergetool merge tool candidates: tortoisemerge emerge vimdiff Merging: texte1.txt Normal merge conflict for 'texte1.txt': {local}: modified file {remote}: modified file Hit return to start merge resolution tool (vimdiff): 88
  • 90. Modifier le fichier texte1.txt texte1.txt texte master develop 90
  • 91. git add texte1.txt git commit -m “Merge OK” [master 1eca022] Merge Ok 91
  • 92. git log --pretty=oneline 1eca0225aebd35927c340214919597be173168c7 Merge Ok 3b40b1fcb2e4c1d5483818e06a0a4c5c6ae1eb97 Texte1 master cbe96035ac64454ba53157e4d7fd57abfed60d88 Texte1 develop f7d65f859a04e16284e34edf1ad599c2966034ea Commit texte1.txt branche master 7470d58dac24636f839250bbff934bac18e6f996 Exclusion des fichiers Eclipse 9bd8c8a990b56384619413ff8d898a809269b3a2 Ajout de toutes les ressources du projet L’historique du commit “Texte1 develop” est également récupéré sur la branche master 92
  • 93. TP 6 - Travailler avec des dépôts distants Objectif : Récupérer/Partager des modifications d’un dépôt Git distant 93
  • 94. git clone https://github.com/ JCERTIFLab/jcertif-webapp.git Cloning into 'jcertif-webapp'... remote: Counting objects: 2201, done. remote: Compressing objects: 100% (938/938), done. remote: Total 2201 (delta 906), reused 2129 (delta 835) Receiving objects: 100% (2201/2201), 85.21 MiB | 1.07 MiB/s, done. Resolving deltas: 100% (906/906), done. 94
  • 95. Modifier le fichier README.md README.md Modifier du texte jcertif-webapp 2012 ============== Web Application : http://www.jcertif.com 95
  • 96. git commit -a -m “Modif README.md” [master 5d3373c] Modif README.md 1 file changed, 1 insertion(+), 1 deletion(-) 96
  • 97. git log --pretty=oneline 5d3373c2106df3c782e1c2e5e8dc817f068dd4ac Modif README.md a56a3e84c096a58df7f900e349f5e43d7ada5f1f Merge pull request #47 from roddet/develop 45f1374f7a31df3d38a2eebb0abb9e5aa1e985dc [SPEAKERS] Ajout de la possibilité d'utiliser les balises HTML pour les bios. 2c098eb7d66de510a102b578fbd8d118d9da0ce2 [HOME] Modification du texte éditorial ba3f7ae455f3b28d87ea3f9047c8d961a7a574e9 Merge pull request #46 from roddet/develop 153a72c6d2a07605c5833a835e5fc0b2efbd35fb [AGENDA] Suppression du libellé 'Salle' de l'entête des colonnes pour éviter que de 8879d6e942b0a3f34b5104c70af61f39068bddeb Merge pull request #41 from roddet/develop de3957d7833b8489c3eb039b862879ec55941e53 [AGENDA] Red color on mouse over 97
  • 98. git remote -v origin git://github.com/JCERTIFLab/jcertif-webapp.git (fetch) origin git://github.com/JCERTIFLab/jcertif-webapp.git (push) 98
  • 99. git remote add roddet https:// github.com/roddet/jcertif- webapp.git Ajout d’un dépôt distant “roddet” 99
  • 100. git remote origin roddet 100
  • 101. git push origin master Dépôt Branche 101
  • 102. git pull 102
  • 103. TP 7 - Git & Eclipse Démo 103
  • 104. Merci ! 104