SlideShare une entreprise Scribd logo
1  sur  52
Télécharger pour lire hors ligne
Formation autour de Git/GitLab
26/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab 1
Abdelghani Azri
Sommaire
• Introduction
– VCS: Version Control System
– Git vs SVN
– Historique Git
• Mise en place Git
– Routines Git
– Advanced features Git
• Graphic Tools: Tortoise Git
• GitLab: C’est quoi ?
• GitLab features
– Gestion des branches
– Pull request
– Internal Issue / Review System
• Git Tips
• Demo
226/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
INTRODUCTION
326/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
INTRODUCTION
• Deux type de gestion de version:
– Centralized Revision Control System (CVCS )
– Distributed Version Control System (DVCS)
426/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
GIT VS SVN
• Git vs SVN
Repo SVN
Dev1 Dev2
commit update
Repo
centralis
é GIT
Dev1 Dev2
commit clone / pull
Repo GIT
push
26/02/2016 5© SQLI GROUP 2016 – Formation autour du Git/GitLab
GIT VS SVN
– Centralized Revision Control System (CVCS )
• CVS, SVN…
• Architecture client serveur
• Un seul repository
• Un serveur central contient toutes les données
• Beaucoup de requêtes entre le client et le serveur
(assez lent)
• Dépendance du serveur ( check out)
626/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
GIT VS SVN
– Distributed Version Control System (DVCS)
» Git, mercurial…
» Toutes les données sont sur notre machine ;
» Les opérations sont très rapides ;
» Connexion internet seulement pour les pull et push
726/02/2016
© SQLI GROUP 2016 – Formation autour du
Git/GitLab
Historique GIT
• Git History:
– Créé en avril 2005 par Linus Torvalds
– Objectif : gérer le workflow d'intégration des
patches du noyau Linux
– Remplacer BitKeeper
– En Mai 2013, 36 % de professionnels utilise Git
826/02/2016
© SQLI GROUP 2016 – Formation autour du
Git/GitLab
Introduction
• Companies and Projects using Git:
926/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
Git configuration
10
• Config
• Initialisation
• Cloner le dépôt
git config --global user.name "Abdelghani Azri"
git config --global user.email "aazri@sqli.com"
mkdir formation
cd formation
git init
git clone « url du dépôt »
#On peut spécier un nom du dépôt
git clone url myrepository
26/02/2016
© SQLI GROUP 2016 – Formation autour du
Git/GitLab
Git configuration (gitignore)
11
• gitignore :
– données sensibles ou inutiles
• Créer/modifier le .gitignore à la racine du projet
– Exemples de fichiers à ignorer:
• # /hybris/
• /hybris/data
• /hybris/log
• /hybris/roles
• /hybris/temp
• lib.so : le fichier lib.so sera ignoré
• *.class : tous les fichiers en .class seront ignorés
• conf/ : tous les fichiers du dossier conf seront ignorés
• conf/**/*. yml : tous les fichiers . yml de tous les sous-dossiers de
conf/ seront ignorés
26/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
Git workflow
12
• Status du fichier
Working
directory
•Untracked
modified
Staging area
•Staged
Repository
•Committed
26/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
checkout
Git workflow
13
• Staging area
26/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
#affiche le statut de la working directory et de la staging area
git status
# ajoute un fichier à la staging area
git add
# : unstage un nouveau fichier
git rm --cached
git checkout --: retire un fichier de la staging area
Git workflow
14
• Commit:
– Un commit est pointeur sur branch
– Chaque commit est unique: hashé (Révision dan SVN)
• Revert
26/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
git commit -m “mon commentaire de commit”
# génère un commit avec les modifications contenues dans
#la staging area
git commit -a -m “mon commentaire de commit”
# ajoute tous les fichiers modifiés (pas les ajouts /
#suppressions) à la staging areaet commite)
# Revert a pushed commit
git revert <commit_hash>
Git workflow
15
• Status fichier résumé
26/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
Git workflow
16
• Status fichier résumé
26/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
untracked
git add
stagedgit status
git commit
Routines Git
17
• Git status
• Git add
26/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
Routines Git
18
• Historique: git log
26/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
Routines Git
19
• Git push
26/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
git push origin master #branche master
git push origin nouvelleBranche # nouvelle branche
Gestion des branches
2026/02/2016
© SQLI GROUP 2016 – Formation autour du
Git/GitLab
Gestion des branches
21
• Gestion des branches
• Mise à jour du branch
26/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
git push origin master #branche master
git push origin nouvelleBranche # nouvelle branche
# J’ai developpé et commité sur ma branche locale
# Mais l’origine de ma branche (le master par exemple) a
également évolué !
git checkout master
git pull
git checkout nouvelleBranche
git rebase master nouvelleBranche
Gestion des branches
22
• Gestion des branches
26/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
git checkout master
# Je dev sur le master (alors que j’aurai du crééer une branche)
…
git commit –am "Je commit sur le master"
# Je m’en aperçoit
git branch newFeature
# Maintenant je dois remettre le master « clean »
# Si je veux quand même conserver les fichiers
git reset --soft HEAD~1
# Si je ne veux pas conserver les fichiers
git reset –-hard HEAD~1
Gestion des branches
• Lister les branches:
– git branch
• Récupérer les branches distantes:
– git fetch
• Lister les branches distantes:
– git branch –a
2326/02/2016
© SQLI GROUP 2016 – Formation autour du
Git/GitLab
Gestion des branches
• Push commit
2426/02/2016
© SQLI GROUP 2016 – Formation autour du
Git/GitLab
Gestion des branches
• Gestion des merges:
– git merge branch1
• Gestion des conflits
2526/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
Gestion des branches
• Gestion des conflits
– git checkout --theirs <fichier>
– git checkout --ours <fichier>
– git add *
– git commit
2626/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
Gestion des tags
• Lister les branches:
– git tag V0.1
• Lister les branches distantes:
– git tag
2726/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
Migrate svn to git
• Migration SVN to Git:
– git svn clone http://svn/repo/here/trunk demo
– cd demo
2826/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
Migrate svn to git
• Supprimer branche/tag local
• Supprimer branche/tag distant
• Autres commandes
2926/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
git tag –d 1.0
git branch –d nouvelleBranche
git push origin :1.0
git push origin :branche
git rm
git rm –cached
git fetch
git checkout master
git tag –a 1.0 –m «Version stable 1.0»
git push origin 1.0
Outils graphiques
• Plusieurs outils graphiques:
– Alternative to command line: commit, branch…
– Ex: TortoiseGit, SouceTree …
– Plugins eclipse: Egit…
3026/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
Outils graphiques
• Tortoise Git:
– Intéressant pour les gens travaillant avec SVN
Tortoise
– User friendly interface
– Intuitive
3126/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
Outils graphiques
• TortoiseGit:
3226/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
Tortoise Git
Démo
3326/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
GitLab
3426/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
Git Lab
3526/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
GitLab
• Interface web pour git
• Clone du GitHub
• Gestion des repos: public, private, interne
• Code review
• Issue tracking
• 25,000 users on a single server
3626/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
GitLab
• Who uses GitLab ?
– AT&T
– Bell
– CERN
– Fraunhofer
– Interpol
– NASA
– Red Hat
– …
3726/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
GitLab workflow
• Git lab workflow:
– 1) Clone or fork repository
– 3) Modifier, commit et push
– 4) Create Merge Request
– 5) Reviewer comments on diffs on the platform.
– 6) Merge branch.
3826/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
Git Lab
3926/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
• Vue commit
Git Lab
4026/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
• Ajout branche
Git Lab
4126/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
Git Lab
4226/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
• Pull Request
Git Lab
4326/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
Git Lab
4426/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
Git Tips
• How to know impushed commit
• How to report a single commit
• Best practices
4526/02/2016
© SQLI GROUP 2016 – Formation autour du
Git/GitLab
Git Tips
• Avant push commits:
4626/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
• Corriger les commits
46
# J’ai fait des commit C1, C2
git pull –rebase
#Puis on peut publier:
git push
# J’ai fait commit C1
git commit –am « C1 »
# Pour changer commit
git amend
Git Tips
• Avant push commits:
4726/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab 47
# Revert all changes
git reset --hard HEAD^ # reset 1 commits
git reset --hard HEAD~5 (reset 5 commits)
# Commits non publiés
git log origin/master..HEAD
Git Tips
• Avant push commits:
4826/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab 48
#Je suis sur la master et j'ai commité sur la branche B1 , le #hash
du commit étant hash_commit
#(par exemple).
# je fais un
git checkout master" #pour revenir au trunk (la branche master).
#Puis j’exécute :
git cherry-pick hash_commit
Git Tips
• Git log :
• Git grep
4926/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab 49
# Indique l’auteur de chaque ligne d’un fichier
git blame <file>
# Visualier les commit
git log
git log id_commit1..id_commit2 # commit antre id1 et id2
#Visualier le contenu du commit
git show
git diff id_commit # diff entre working copy et commit
git diff id_commit1 id_commit2 # diff entre deux commits
# Rechercher un text dans un fichier
git grep <texte> [<ref>]
Git Tips
5026/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab 50
git checkout brancheRecette
# Je dev quelques corrections mineures...
…
# Evidemment, urgence absolue ! Correction à faire et à pousser
sur le serveur de recette.
git stash
# Je fais mon correctif urgent
…
git commit –am "Correction urgente !«
git push
git stash apply
# Je continue des corrections mineures.
…
# Créer un patch (n derniers commits)
git format-patch [-n]
# Appliquer patch
git apply <patch>
Conclusion
Sites :
› http://git-scm.com/book
› http://www.alexgirard.com/git-book/
› http://wiki.winehq.org/GitWine
› https://help.github.com/articles/fork-a-repo/
› https://tortoisegit.org/docs/tortoisegit/
› http://www.via.ecp.fr/viaform/2013-14/2014%20-%20Formation%20Git.pdf
› http://www.slideshare.net/ippontech/formation-git-gratuite-par-ippon-2014
› https://about.gitlab.com/features/
› http://gitLab.com
› https://about.gitlab.com/gitlab-ci/
› http://doc.gitlab.com/ce/
Site pour simulation manipulation branches sous git
› http://pcottle.github.io/learnGitBranching/?NODEMO
5126/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
Formation autour de git/gitLab
Merci pour votre
attention
26/02/2016
© SQLI GROUP 2016 – Formation autour du
Git/GitLab
52

Contenu connexe

Tendances

Presentation DevOps : enjeux , objectifs, consequences
Presentation DevOps : enjeux , objectifs, consequencesPresentation DevOps : enjeux , objectifs, consequences
Presentation DevOps : enjeux , objectifs, consequencesStéphane Di Cioccio
 
Using GitLab CI
Using GitLab CIUsing GitLab CI
Using GitLab CIColCh
 
GitHub - Présentation
GitHub - PrésentationGitHub - Présentation
GitHub - PrésentationDavid RIEHL
 
Présentation DEVOPS.pptx
Présentation DEVOPS.pptxPrésentation DEVOPS.pptx
Présentation DEVOPS.pptxboulonvert
 
Git pour les (pas si) nuls
Git pour les (pas si) nulsGit pour les (pas si) nuls
Git pour les (pas si) nulsMalk Zameth
 
GITS Class #16: CI/CD (Continuous Integration & Continuous Deployment) with G...
GITS Class #16: CI/CD (Continuous Integration & Continuous Deployment) with G...GITS Class #16: CI/CD (Continuous Integration & Continuous Deployment) with G...
GITS Class #16: CI/CD (Continuous Integration & Continuous Deployment) with G...GITS Indonesia
 
DEVOPS - La synthèse
DEVOPS - La synthèseDEVOPS - La synthèse
DEVOPS - La synthèseCOMPETENSIS
 
Intégration de SonarQube dans GitLab ci
Intégration de SonarQube dans GitLab ciIntégration de SonarQube dans GitLab ci
Intégration de SonarQube dans GitLab ciwiemfourati
 
Découvrir et utiliser Git : le logiciel de gestion de versions décentralisé
Découvrir et utiliser Git : le logiciel de gestion de versions décentraliséDécouvrir et utiliser Git : le logiciel de gestion de versions décentralisé
Découvrir et utiliser Git : le logiciel de gestion de versions décentraliséECAM Brussels Engineering School
 
Introduction au génie logiciel 1.2
Introduction au génie logiciel 1.2Introduction au génie logiciel 1.2
Introduction au génie logiciel 1.2Stéphane Salmons
 
Devops Porto - CI/CD at Gitlab
Devops Porto - CI/CD at GitlabDevops Porto - CI/CD at Gitlab
Devops Porto - CI/CD at GitlabFilipa Lacerda
 
Intégration continue et déploiement continue avec Jenkins
Intégration continue et déploiement continue avec JenkinsIntégration continue et déploiement continue avec Jenkins
Intégration continue et déploiement continue avec JenkinsKokou Gaglo
 
DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et DockerStephane Manciot
 
Expose linux gestion des processus
Expose linux  gestion des processusExpose linux  gestion des processus
Expose linux gestion des processusFatima Zahra Fagroud
 
Jenkins vs GitLab CI
Jenkins vs GitLab CIJenkins vs GitLab CI
Jenkins vs GitLab CICEE-SEC(R)
 
Tadx - Présentation Conteneurisation
Tadx -  Présentation ConteneurisationTadx -  Présentation Conteneurisation
Tadx - Présentation ConteneurisationTADx
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UMLAmir Souissi
 

Tendances (20)

Git l'essentiel
Git l'essentielGit l'essentiel
Git l'essentiel
 
Presentation DevOps : enjeux , objectifs, consequences
Presentation DevOps : enjeux , objectifs, consequencesPresentation DevOps : enjeux , objectifs, consequences
Presentation DevOps : enjeux , objectifs, consequences
 
Using GitLab CI
Using GitLab CIUsing GitLab CI
Using GitLab CI
 
GitHub - Présentation
GitHub - PrésentationGitHub - Présentation
GitHub - Présentation
 
Présentation DEVOPS.pptx
Présentation DEVOPS.pptxPrésentation DEVOPS.pptx
Présentation DEVOPS.pptx
 
Git pour les (pas si) nuls
Git pour les (pas si) nulsGit pour les (pas si) nuls
Git pour les (pas si) nuls
 
GITS Class #16: CI/CD (Continuous Integration & Continuous Deployment) with G...
GITS Class #16: CI/CD (Continuous Integration & Continuous Deployment) with G...GITS Class #16: CI/CD (Continuous Integration & Continuous Deployment) with G...
GITS Class #16: CI/CD (Continuous Integration & Continuous Deployment) with G...
 
DEVOPS - La synthèse
DEVOPS - La synthèseDEVOPS - La synthèse
DEVOPS - La synthèse
 
Git and github 101
Git and github 101Git and github 101
Git and github 101
 
Intégration de SonarQube dans GitLab ci
Intégration de SonarQube dans GitLab ciIntégration de SonarQube dans GitLab ci
Intégration de SonarQube dans GitLab ci
 
Découvrir et utiliser Git : le logiciel de gestion de versions décentralisé
Découvrir et utiliser Git : le logiciel de gestion de versions décentraliséDécouvrir et utiliser Git : le logiciel de gestion de versions décentralisé
Découvrir et utiliser Git : le logiciel de gestion de versions décentralisé
 
Introduction au génie logiciel 1.2
Introduction au génie logiciel 1.2Introduction au génie logiciel 1.2
Introduction au génie logiciel 1.2
 
Devops Porto - CI/CD at Gitlab
Devops Porto - CI/CD at GitlabDevops Porto - CI/CD at Gitlab
Devops Porto - CI/CD at Gitlab
 
Intégration continue et déploiement continue avec Jenkins
Intégration continue et déploiement continue avec JenkinsIntégration continue et déploiement continue avec Jenkins
Intégration continue et déploiement continue avec Jenkins
 
DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et Docker
 
Expose linux gestion des processus
Expose linux  gestion des processusExpose linux  gestion des processus
Expose linux gestion des processus
 
Jenkins vs GitLab CI
Jenkins vs GitLab CIJenkins vs GitLab CI
Jenkins vs GitLab CI
 
Git 101 for Beginners
Git 101 for Beginners Git 101 for Beginners
Git 101 for Beginners
 
Tadx - Présentation Conteneurisation
Tadx -  Présentation ConteneurisationTadx -  Présentation Conteneurisation
Tadx - Présentation Conteneurisation
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UML
 

En vedette

Introduction to Gitlab
Introduction to GitlabIntroduction to Gitlab
Introduction to GitlabJulien Pivotto
 
Why you can't ignore GitLab
Why you can't ignore GitLabWhy you can't ignore GitLab
Why you can't ignore GitLabPivorak MeetUp
 
Gitlab Training with GIT and SourceTree
Gitlab Training with GIT and SourceTreeGitlab Training with GIT and SourceTree
Gitlab Training with GIT and SourceTreeTeerapat Khunpech
 
Introduction to Git/Github - A beginner's guide
Introduction to Git/Github - A beginner's guideIntroduction to Git/Github - A beginner's guide
Introduction to Git/Github - A beginner's guideRohit Arora
 
vCenter Hyperic Administration Guide 5.8
vCenter Hyperic Administration Guide 5.8vCenter Hyperic Administration Guide 5.8
vCenter Hyperic Administration Guide 5.8Kumaran Balachandran
 
simple Introduction to git
simple Introduction to gitsimple Introduction to git
simple Introduction to gitOmid Khosrojerdi
 
WordCamp Lyon 2015 - WordPress, Git et l'intégration continue
 WordCamp Lyon 2015 - WordPress, Git et l'intégration continue WordCamp Lyon 2015 - WordPress, Git et l'intégration continue
WordCamp Lyon 2015 - WordPress, Git et l'intégration continueStéphane HULARD
 
PBISE : Installation and Administration Guide v7.5
PBISE : Installation and Administration Guide v7.5PBISE : Installation and Administration Guide v7.5
PBISE : Installation and Administration Guide v7.5Kumaran Balachandran
 
GitLab 8.5 Highlights and Step-by-step tutorial
GitLab 8.5 Highlights and Step-by-step tutorialGitLab 8.5 Highlights and Step-by-step tutorial
GitLab 8.5 Highlights and Step-by-step tutorialGitLab, Inc
 
FOSDEM 2017: GitLab CI
FOSDEM 2017:  GitLab CIFOSDEM 2017:  GitLab CI
FOSDEM 2017: GitLab CIOlinData
 
Breaking Bad Habits with GitLab CI
Breaking Bad Habits with GitLab CIBreaking Bad Habits with GitLab CI
Breaking Bad Habits with GitLab CIIvan Nemytchenko
 
How we scaled git lab for a 30k employee company
How we scaled git lab for a 30k employee companyHow we scaled git lab for a 30k employee company
How we scaled git lab for a 30k employee companyMinqi Pan
 
Enjoy privacy on Gitlab
Enjoy privacy on GitlabEnjoy privacy on Gitlab
Enjoy privacy on GitlabMaxis Kao
 
Microservices architecture
Microservices architectureMicroservices architecture
Microservices architectureAbdelghani Azri
 
Gitlab flow solo
Gitlab flow soloGitlab flow solo
Gitlab flow soloviniciusban
 
Introduction to github slideshare
Introduction to github slideshareIntroduction to github slideshare
Introduction to github slideshareRakesh Sukumar
 

En vedette (20)

Introduction to Gitlab
Introduction to GitlabIntroduction to Gitlab
Introduction to Gitlab
 
Up GitLab Presentation 2015
Up GitLab Presentation 2015Up GitLab Presentation 2015
Up GitLab Presentation 2015
 
Why you can't ignore GitLab
Why you can't ignore GitLabWhy you can't ignore GitLab
Why you can't ignore GitLab
 
Gitlab Training with GIT and SourceTree
Gitlab Training with GIT and SourceTreeGitlab Training with GIT and SourceTree
Gitlab Training with GIT and SourceTree
 
Introduction to Git/Github - A beginner's guide
Introduction to Git/Github - A beginner's guideIntroduction to Git/Github - A beginner's guide
Introduction to Git/Github - A beginner's guide
 
SAINT 7 : User Documentation
SAINT 7 : User DocumentationSAINT 7 : User Documentation
SAINT 7 : User Documentation
 
vCenter Hyperic Administration Guide 5.8
vCenter Hyperic Administration Guide 5.8vCenter Hyperic Administration Guide 5.8
vCenter Hyperic Administration Guide 5.8
 
simple Introduction to git
simple Introduction to gitsimple Introduction to git
simple Introduction to git
 
WordCamp Lyon 2015 - WordPress, Git et l'intégration continue
 WordCamp Lyon 2015 - WordPress, Git et l'intégration continue WordCamp Lyon 2015 - WordPress, Git et l'intégration continue
WordCamp Lyon 2015 - WordPress, Git et l'intégration continue
 
PBISE : Installation and Administration Guide v7.5
PBISE : Installation and Administration Guide v7.5PBISE : Installation and Administration Guide v7.5
PBISE : Installation and Administration Guide v7.5
 
GitLab 8.5 Highlights and Step-by-step tutorial
GitLab 8.5 Highlights and Step-by-step tutorialGitLab 8.5 Highlights and Step-by-step tutorial
GitLab 8.5 Highlights and Step-by-step tutorial
 
Growing an Open Company
Growing an Open CompanyGrowing an Open Company
Growing an Open Company
 
FOSDEM 2017: GitLab CI
FOSDEM 2017:  GitLab CIFOSDEM 2017:  GitLab CI
FOSDEM 2017: GitLab CI
 
Breaking Bad Habits with GitLab CI
Breaking Bad Habits with GitLab CIBreaking Bad Habits with GitLab CI
Breaking Bad Habits with GitLab CI
 
GitLab Product Update, January 2017
GitLab Product Update, January 2017GitLab Product Update, January 2017
GitLab Product Update, January 2017
 
How we scaled git lab for a 30k employee company
How we scaled git lab for a 30k employee companyHow we scaled git lab for a 30k employee company
How we scaled git lab for a 30k employee company
 
Enjoy privacy on Gitlab
Enjoy privacy on GitlabEnjoy privacy on Gitlab
Enjoy privacy on Gitlab
 
Microservices architecture
Microservices architectureMicroservices architecture
Microservices architecture
 
Gitlab flow solo
Gitlab flow soloGitlab flow solo
Gitlab flow solo
 
Introduction to github slideshare
Introduction to github slideshareIntroduction to github slideshare
Introduction to github slideshare
 

Similaire à Formation autour de git et git lab

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
 
Outils web pour le développement collaboratif
Outils web pour le développement collaboratifOutils web pour le développement collaboratif
Outils web pour le développement collaboratifPhilippe Guglielmetti
 
Alphorm.com support de la formation Git avancé
Alphorm.com support de la formation Git avancé Alphorm.com support de la formation Git avancé
Alphorm.com support de la formation Git avancé Alphorm
 
Outils web pour le développement collaboratif
Outils web pour le développement collaboratifOutils web pour le développement collaboratif
Outils web pour le développement collaboratifPhilippe Guglielmetti
 
Git vs SVN
Git vs SVNGit vs SVN
Git vs SVNneuros
 
ISCOM::HTML/CSS::session1 (20140930)
ISCOM::HTML/CSS::session1 (20140930)ISCOM::HTML/CSS::session1 (20140930)
ISCOM::HTML/CSS::session1 (20140930)Nicolas Aguenot
 
Alphorm.com Support de la Formation Git
Alphorm.com Support de la Formation Git Alphorm.com Support de la Formation Git
Alphorm.com Support de la Formation Git Alphorm
 
Présentation du versioning avec Git
Présentation du versioning avec GitPrésentation du versioning avec Git
Présentation du versioning avec Gitmsadouni
 
Introduction à git.pdf
Introduction à git.pdfIntroduction à git.pdf
Introduction à git.pdfbadrfathallah2
 
MWCP21 - Introduction GitHub et SharePoint Framework
MWCP21 - Introduction GitHub et SharePoint FrameworkMWCP21 - Introduction GitHub et SharePoint Framework
MWCP21 - Introduction GitHub et SharePoint FrameworkLaurent Sittler
 
Utilisation de git avec Delphi
Utilisation de git avec DelphiUtilisation de git avec Delphi
Utilisation de git avec Delphipprem
 
Pourquoi versionner ses githooks.pdf
Pourquoi versionner ses githooks.pdfPourquoi versionner ses githooks.pdf
Pourquoi versionner ses githooks.pdfChris Saez
 
GIT training - basic for software projects
GIT training - basic for software projectsGIT training - basic for software projects
GIT training - basic for software projectsThierry Gayet
 
Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Ippon
 
JCertif 2012 : Git par la pratique
JCertif 2012 : Git par la pratiqueJCertif 2012 : Git par la pratique
JCertif 2012 : Git par la pratiqueRossi Oddet
 
REX - Passage de CVS à Git
REX - Passage de CVS à GitREX - Passage de CVS à Git
REX - Passage de CVS à GitPierre Templier
 

Similaire à Formation autour de git et git lab (20)

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...
 
Outils web pour le développement collaboratif
Outils web pour le développement collaboratifOutils web pour le développement collaboratif
Outils web pour le développement collaboratif
 
Alphorm.com support de la formation Git avancé
Alphorm.com support de la formation Git avancé Alphorm.com support de la formation Git avancé
Alphorm.com support de la formation Git avancé
 
Outils web pour le développement collaboratif
Outils web pour le développement collaboratifOutils web pour le développement collaboratif
Outils web pour le développement collaboratif
 
3_SCM_Git.pdf
3_SCM_Git.pdf3_SCM_Git.pdf
3_SCM_Git.pdf
 
Git vs SVN
Git vs SVNGit vs SVN
Git vs SVN
 
ISCOM::HTML/CSS::session1 (20140930)
ISCOM::HTML/CSS::session1 (20140930)ISCOM::HTML/CSS::session1 (20140930)
ISCOM::HTML/CSS::session1 (20140930)
 
Alphorm.com Support de la Formation Git
Alphorm.com Support de la Formation Git Alphorm.com Support de la Formation Git
Alphorm.com Support de la Formation Git
 
Présentation du versioning avec Git
Présentation du versioning avec GitPrésentation du versioning avec Git
Présentation du versioning avec Git
 
Introduction à git.pdf
Introduction à git.pdfIntroduction à git.pdf
Introduction à git.pdf
 
MWCP21 - Introduction GitHub et SharePoint Framework
MWCP21 - Introduction GitHub et SharePoint FrameworkMWCP21 - Introduction GitHub et SharePoint Framework
MWCP21 - Introduction GitHub et SharePoint Framework
 
Git pratique
Git pratiqueGit pratique
Git pratique
 
Git pratique
Git pratiqueGit pratique
Git pratique
 
Utilisation de git avec Delphi
Utilisation de git avec DelphiUtilisation de git avec Delphi
Utilisation de git avec Delphi
 
Pourquoi versionner ses githooks.pdf
Pourquoi versionner ses githooks.pdfPourquoi versionner ses githooks.pdf
Pourquoi versionner ses githooks.pdf
 
GIT training - basic for software projects
GIT training - basic for software projectsGIT training - basic for software projects
GIT training - basic for software projects
 
Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014
 
Slide show Powiter
Slide show PowiterSlide show Powiter
Slide show Powiter
 
JCertif 2012 : Git par la pratique
JCertif 2012 : Git par la pratiqueJCertif 2012 : Git par la pratique
JCertif 2012 : Git par la pratique
 
REX - Passage de CVS à Git
REX - Passage de CVS à GitREX - Passage de CVS à Git
REX - Passage de CVS à Git
 

Formation autour de git et git lab

  • 1. Formation autour de Git/GitLab 26/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab 1 Abdelghani Azri
  • 2. Sommaire • Introduction – VCS: Version Control System – Git vs SVN – Historique Git • Mise en place Git – Routines Git – Advanced features Git • Graphic Tools: Tortoise Git • GitLab: C’est quoi ? • GitLab features – Gestion des branches – Pull request – Internal Issue / Review System • Git Tips • Demo 226/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
  • 3. INTRODUCTION 326/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
  • 4. INTRODUCTION • Deux type de gestion de version: – Centralized Revision Control System (CVCS ) – Distributed Version Control System (DVCS) 426/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
  • 5. GIT VS SVN • Git vs SVN Repo SVN Dev1 Dev2 commit update Repo centralis é GIT Dev1 Dev2 commit clone / pull Repo GIT push 26/02/2016 5© SQLI GROUP 2016 – Formation autour du Git/GitLab
  • 6. GIT VS SVN – Centralized Revision Control System (CVCS ) • CVS, SVN… • Architecture client serveur • Un seul repository • Un serveur central contient toutes les données • Beaucoup de requêtes entre le client et le serveur (assez lent) • Dépendance du serveur ( check out) 626/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
  • 7. GIT VS SVN – Distributed Version Control System (DVCS) » Git, mercurial… » Toutes les données sont sur notre machine ; » Les opérations sont très rapides ; » Connexion internet seulement pour les pull et push 726/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
  • 8. Historique GIT • Git History: – Créé en avril 2005 par Linus Torvalds – Objectif : gérer le workflow d'intégration des patches du noyau Linux – Remplacer BitKeeper – En Mai 2013, 36 % de professionnels utilise Git 826/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
  • 9. Introduction • Companies and Projects using Git: 926/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
  • 10. Git configuration 10 • Config • Initialisation • Cloner le dépôt git config --global user.name "Abdelghani Azri" git config --global user.email "aazri@sqli.com" mkdir formation cd formation git init git clone « url du dépôt » #On peut spécier un nom du dépôt git clone url myrepository 26/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
  • 11. Git configuration (gitignore) 11 • gitignore : – données sensibles ou inutiles • Créer/modifier le .gitignore à la racine du projet – Exemples de fichiers à ignorer: • # /hybris/ • /hybris/data • /hybris/log • /hybris/roles • /hybris/temp • lib.so : le fichier lib.so sera ignoré • *.class : tous les fichiers en .class seront ignorés • conf/ : tous les fichiers du dossier conf seront ignorés • conf/**/*. yml : tous les fichiers . yml de tous les sous-dossiers de conf/ seront ignorés 26/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
  • 12. Git workflow 12 • Status du fichier Working directory •Untracked modified Staging area •Staged Repository •Committed 26/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab checkout
  • 13. Git workflow 13 • Staging area 26/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab #affiche le statut de la working directory et de la staging area git status # ajoute un fichier à la staging area git add # : unstage un nouveau fichier git rm --cached git checkout --: retire un fichier de la staging area
  • 14. Git workflow 14 • Commit: – Un commit est pointeur sur branch – Chaque commit est unique: hashé (Révision dan SVN) • Revert 26/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab git commit -m “mon commentaire de commit” # génère un commit avec les modifications contenues dans #la staging area git commit -a -m “mon commentaire de commit” # ajoute tous les fichiers modifiés (pas les ajouts / #suppressions) à la staging areaet commite) # Revert a pushed commit git revert <commit_hash>
  • 15. Git workflow 15 • Status fichier résumé 26/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
  • 16. Git workflow 16 • Status fichier résumé 26/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab untracked git add stagedgit status git commit
  • 17. Routines Git 17 • Git status • Git add 26/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
  • 18. Routines Git 18 • Historique: git log 26/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
  • 19. Routines Git 19 • Git push 26/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab git push origin master #branche master git push origin nouvelleBranche # nouvelle branche
  • 20. Gestion des branches 2026/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
  • 21. Gestion des branches 21 • Gestion des branches • Mise à jour du branch 26/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab git push origin master #branche master git push origin nouvelleBranche # nouvelle branche # J’ai developpé et commité sur ma branche locale # Mais l’origine de ma branche (le master par exemple) a également évolué ! git checkout master git pull git checkout nouvelleBranche git rebase master nouvelleBranche
  • 22. Gestion des branches 22 • Gestion des branches 26/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab git checkout master # Je dev sur le master (alors que j’aurai du crééer une branche) … git commit –am "Je commit sur le master" # Je m’en aperçoit git branch newFeature # Maintenant je dois remettre le master « clean » # Si je veux quand même conserver les fichiers git reset --soft HEAD~1 # Si je ne veux pas conserver les fichiers git reset –-hard HEAD~1
  • 23. Gestion des branches • Lister les branches: – git branch • Récupérer les branches distantes: – git fetch • Lister les branches distantes: – git branch –a 2326/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
  • 24. Gestion des branches • Push commit 2426/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
  • 25. Gestion des branches • Gestion des merges: – git merge branch1 • Gestion des conflits 2526/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
  • 26. Gestion des branches • Gestion des conflits – git checkout --theirs <fichier> – git checkout --ours <fichier> – git add * – git commit 2626/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
  • 27. Gestion des tags • Lister les branches: – git tag V0.1 • Lister les branches distantes: – git tag 2726/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
  • 28. Migrate svn to git • Migration SVN to Git: – git svn clone http://svn/repo/here/trunk demo – cd demo 2826/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
  • 29. Migrate svn to git • Supprimer branche/tag local • Supprimer branche/tag distant • Autres commandes 2926/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab git tag –d 1.0 git branch –d nouvelleBranche git push origin :1.0 git push origin :branche git rm git rm –cached git fetch git checkout master git tag –a 1.0 –m «Version stable 1.0» git push origin 1.0
  • 30. Outils graphiques • Plusieurs outils graphiques: – Alternative to command line: commit, branch… – Ex: TortoiseGit, SouceTree … – Plugins eclipse: Egit… 3026/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
  • 31. Outils graphiques • Tortoise Git: – Intéressant pour les gens travaillant avec SVN Tortoise – User friendly interface – Intuitive 3126/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
  • 32. Outils graphiques • TortoiseGit: 3226/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
  • 33. Tortoise Git Démo 3326/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
  • 34. GitLab 3426/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
  • 35. Git Lab 3526/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
  • 36. GitLab • Interface web pour git • Clone du GitHub • Gestion des repos: public, private, interne • Code review • Issue tracking • 25,000 users on a single server 3626/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
  • 37. GitLab • Who uses GitLab ? – AT&T – Bell – CERN – Fraunhofer – Interpol – NASA – Red Hat – … 3726/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
  • 38. GitLab workflow • Git lab workflow: – 1) Clone or fork repository – 3) Modifier, commit et push – 4) Create Merge Request – 5) Reviewer comments on diffs on the platform. – 6) Merge branch. 3826/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
  • 39. Git Lab 3926/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab • Vue commit
  • 40. Git Lab 4026/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab • Ajout branche
  • 41. Git Lab 4126/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
  • 42. Git Lab 4226/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab • Pull Request
  • 43. Git Lab 4326/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
  • 44. Git Lab 4426/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
  • 45. Git Tips • How to know impushed commit • How to report a single commit • Best practices 4526/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
  • 46. Git Tips • Avant push commits: 4626/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab • Corriger les commits 46 # J’ai fait des commit C1, C2 git pull –rebase #Puis on peut publier: git push # J’ai fait commit C1 git commit –am « C1 » # Pour changer commit git amend
  • 47. Git Tips • Avant push commits: 4726/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab 47 # Revert all changes git reset --hard HEAD^ # reset 1 commits git reset --hard HEAD~5 (reset 5 commits) # Commits non publiés git log origin/master..HEAD
  • 48. Git Tips • Avant push commits: 4826/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab 48 #Je suis sur la master et j'ai commité sur la branche B1 , le #hash du commit étant hash_commit #(par exemple). # je fais un git checkout master" #pour revenir au trunk (la branche master). #Puis j’exécute : git cherry-pick hash_commit
  • 49. Git Tips • Git log : • Git grep 4926/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab 49 # Indique l’auteur de chaque ligne d’un fichier git blame <file> # Visualier les commit git log git log id_commit1..id_commit2 # commit antre id1 et id2 #Visualier le contenu du commit git show git diff id_commit # diff entre working copy et commit git diff id_commit1 id_commit2 # diff entre deux commits # Rechercher un text dans un fichier git grep <texte> [<ref>]
  • 50. Git Tips 5026/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab 50 git checkout brancheRecette # Je dev quelques corrections mineures... … # Evidemment, urgence absolue ! Correction à faire et à pousser sur le serveur de recette. git stash # Je fais mon correctif urgent … git commit –am "Correction urgente !« git push git stash apply # Je continue des corrections mineures. … # Créer un patch (n derniers commits) git format-patch [-n] # Appliquer patch git apply <patch>
  • 51. Conclusion Sites : › http://git-scm.com/book › http://www.alexgirard.com/git-book/ › http://wiki.winehq.org/GitWine › https://help.github.com/articles/fork-a-repo/ › https://tortoisegit.org/docs/tortoisegit/ › http://www.via.ecp.fr/viaform/2013-14/2014%20-%20Formation%20Git.pdf › http://www.slideshare.net/ippontech/formation-git-gratuite-par-ippon-2014 › https://about.gitlab.com/features/ › http://gitLab.com › https://about.gitlab.com/gitlab-ci/ › http://doc.gitlab.com/ce/ Site pour simulation manipulation branches sous git › http://pcottle.github.io/learnGitBranching/?NODEMO 5126/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab
  • 52. Formation autour de git/gitLab Merci pour votre attention 26/02/2016 © SQLI GROUP 2016 – Formation autour du Git/GitLab 52