SlideShare une entreprise Scribd logo
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

Introducing GitLab (September 2018)
Introducing GitLab (September 2018)Introducing GitLab (September 2018)
Introducing GitLab (September 2018)
Noa Harel
 
Git Lab Introduction
Git Lab IntroductionGit Lab Introduction
Git Lab Introduction
Krunal Doshi
 
Tutoriel GIT
Tutoriel GITTutoriel GIT
Tutoriel GIT
Francois ANDRE
 
Présentation de git
Présentation de gitPrésentation de git
Présentation de git
Julien Blin
 
A successful Git branching model
A successful Git branching model A successful Git branching model
A successful Git branching model
abodeltae
 
Introduction to GitHub
Introduction to GitHubIntroduction to GitHub
Introduction to GitHub
Nishan Bose
 
Git Grundlagen
Git GrundlagenGit Grundlagen
Git Grundlagen
Benjamin Schürmann
 
Introduction To Git
Introduction To GitIntroduction To Git
Introduction To Git
Arnaud Seilles
 
Git presentation
Git presentationGit presentation
Git presentation
Sai Kumar Satapathy
 
Devops and git basics
Devops and git basicsDevops and git basics
Devops and git basics
Sourabh Saxena
 
Git pour les (pas si) nuls
Git pour les (pas si) nulsGit pour les (pas si) nuls
Git pour les (pas si) nuls
Malk Zameth
 
Git undo
Git undoGit undo
Git undo
Avilay Parekh
 
git - eine praktische Einführung
git - eine praktische Einführunggit - eine praktische Einführung
git - eine praktische Einführung
Marcel Eichner
 
Git-flow workflow and pull-requests
Git-flow workflow and pull-requestsGit-flow workflow and pull-requests
Git-flow workflow and pull-requests
Bartosz Kosarzycki
 
Starting with Git & GitHub
Starting with Git & GitHubStarting with Git & GitHub
Starting with Git & GitHub
Nicolás Tourné
 
Introducing GitLab
Introducing GitLabIntroducing GitLab
Introducing GitLab
Taisuke Inoue
 
Les bases de git
Les bases de gitLes bases de git
Les bases de git
Pierre Sudron
 
Git & GitLab
Git & GitLabGit & GitLab
Git & GitLab
Gaurav Wable
 
Git
GitGit
Gitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement ContinueGitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement Continue
Vincent Composieux
 

Tendances (20)

Introducing GitLab (September 2018)
Introducing GitLab (September 2018)Introducing GitLab (September 2018)
Introducing GitLab (September 2018)
 
Git Lab Introduction
Git Lab IntroductionGit Lab Introduction
Git Lab Introduction
 
Tutoriel GIT
Tutoriel GITTutoriel GIT
Tutoriel GIT
 
Présentation de git
Présentation de gitPrésentation de git
Présentation de git
 
A successful Git branching model
A successful Git branching model A successful Git branching model
A successful Git branching model
 
Introduction to GitHub
Introduction to GitHubIntroduction to GitHub
Introduction to GitHub
 
Git Grundlagen
Git GrundlagenGit Grundlagen
Git Grundlagen
 
Introduction To Git
Introduction To GitIntroduction To Git
Introduction To Git
 
Git presentation
Git presentationGit presentation
Git presentation
 
Devops and git basics
Devops and git basicsDevops and git basics
Devops and git basics
 
Git pour les (pas si) nuls
Git pour les (pas si) nulsGit pour les (pas si) nuls
Git pour les (pas si) nuls
 
Git undo
Git undoGit undo
Git undo
 
git - eine praktische Einführung
git - eine praktische Einführunggit - eine praktische Einführung
git - eine praktische Einführung
 
Git-flow workflow and pull-requests
Git-flow workflow and pull-requestsGit-flow workflow and pull-requests
Git-flow workflow and pull-requests
 
Starting with Git & GitHub
Starting with Git & GitHubStarting with Git & GitHub
Starting with Git & GitHub
 
Introducing GitLab
Introducing GitLabIntroducing GitLab
Introducing GitLab
 
Les bases de git
Les bases de gitLes bases de git
Les bases de git
 
Git & GitLab
Git & GitLabGit & GitLab
Git & GitLab
 
Git
GitGit
Git
 
Gitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement ContinueGitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement Continue
 

En vedette

Introduction to Gitlab
Introduction to GitlabIntroduction to Gitlab
Introduction to Gitlab
Julien Pivotto
 
Up GitLab Presentation 2015
Up GitLab Presentation 2015Up GitLab Presentation 2015
Up GitLab Presentation 2015
Kumaran Balachandran
 
Why you can't ignore GitLab
Why you can't ignore GitLabWhy you can't ignore GitLab
Why you can't ignore GitLab
Pivorak MeetUp
 
Gitlab Training with GIT and SourceTree
Gitlab Training with GIT and SourceTreeGitlab Training with GIT and SourceTree
Gitlab Training with GIT and SourceTree
Teerapat 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 guide
Rohit Arora
 
SAINT 7 : User Documentation
SAINT 7 : User DocumentationSAINT 7 : User Documentation
SAINT 7 : User Documentation
Kumaran Balachandran
 
vCenter Hyperic Administration Guide 5.8
vCenter Hyperic Administration Guide 5.8vCenter Hyperic Administration Guide 5.8
vCenter Hyperic Administration Guide 5.8
Kumaran Balachandran
 
simple Introduction to git
simple Introduction to gitsimple Introduction to git
simple Introduction to git
Omid 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 continue
Sté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.5
Kumaran 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 tutorial
GitLab, Inc
 
Growing an Open Company
Growing an Open CompanyGrowing an Open Company
Growing an Open Company
🌍 Job van der Voort
 
FOSDEM 2017: GitLab CI
FOSDEM 2017:  GitLab CIFOSDEM 2017:  GitLab CI
FOSDEM 2017: GitLab CI
OlinData
 
Breaking Bad Habits with GitLab CI
Breaking Bad Habits with GitLab CIBreaking Bad Habits with GitLab CI
Breaking Bad Habits with GitLab CI
Ivan Nemytchenko
 
GitLab Product Update, January 2017
GitLab Product Update, January 2017GitLab Product Update, January 2017
GitLab Product Update, January 2017
🌍 Job van der Voort
 
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
Minqi Pan
 
Enjoy privacy on Gitlab
Enjoy privacy on GitlabEnjoy privacy on Gitlab
Enjoy privacy on Gitlab
Maxis Kao
 
Microservices architecture
Microservices architectureMicroservices architecture
Microservices architecture
Abdelghani Azri
 
Gitlab flow solo
Gitlab flow soloGitlab flow solo
Gitlab flow solo
viniciusban
 
Using GitLab CI
Using GitLab CIUsing GitLab CI
Using GitLab CI
ColCh
 

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
 
Using GitLab CI
Using GitLab CIUsing GitLab CI
Using GitLab CI
 

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 collaboratif
Philippe 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 collaboratif
Philippe Guglielmetti
 
3_SCM_Git.pdf
3_SCM_Git.pdf3_SCM_Git.pdf
3_SCM_Git.pdf
NourFrioui
 
Git vs SVN
Git vs SVNGit vs SVN
Git vs SVN
neuros
 
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 Git
msadouni
 
Introduction à git.pdf
Introduction à git.pdfIntroduction à git.pdf
Introduction à git.pdf
badrfathallah2
 
MWCP21 - Introduction GitHub et SharePoint Framework
MWCP21 - Introduction GitHub et SharePoint FrameworkMWCP21 - Introduction GitHub et SharePoint Framework
MWCP21 - Introduction GitHub et SharePoint Framework
Laurent Sittler
 
Git pratique
Git pratiqueGit pratique
Git pratique
quicky_osm
 
Git pratique
Git pratiqueGit pratique
Git pratique
quicky_osm
 
Utilisation de git avec Delphi
Utilisation de git avec DelphiUtilisation de git avec Delphi
Utilisation de git avec Delphi
pprem
 
Pourquoi versionner ses githooks.pdf
Pourquoi versionner ses githooks.pdfPourquoi versionner ses githooks.pdf
Pourquoi versionner ses githooks.pdf
Chris Saez
 
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
 
Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014
Ippon
 
Slide show Powiter
Slide show PowiterSlide show Powiter
Slide show Powiter
Alexandre Gauthier
 
JCertif 2012 : Git par la pratique
JCertif 2012 : Git par la pratiqueJCertif 2012 : Git par la pratique
JCertif 2012 : Git par la pratique
Rossi Oddet
 
REX - Passage de CVS à Git
REX - Passage de CVS à GitREX - Passage de CVS à Git
REX - Passage de CVS à Git
Pierre 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