AnneCadiou - Claude Bernard University Lyon...

133
Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web Introduction à Git Anne Cadiou Laboratoire de Mécanique des Fluides et d’Acoustique Informatique scientifique pour le calcul École doctorale 2016-2017 1 / 70

Transcript of AnneCadiou - Claude Bernard University Lyon...

Page 1: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Introduction à Git

Anne Cadiou

Laboratoire de Mécanique des Fluides et d’Acoustique

Informatique scientifique pour le calculÉcole doctorale

2016-2017

1 / 70

Page 2: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Table des matières

1 Contexte

2 Systèmes de gestion de versions

3 Git

4 Exemple local

5 Exemple collaboratif

6 Outils, forges, serveurs et services web

2 / 70

Page 3: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Table des matières

1 Contexte

2 Systèmes de gestion de versions

3 Git

4 Exemple local

5 Exemple collaboratif

6 Outils, forges, serveurs et services web

3 / 70

Page 4: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Méthodologie

Mise en place de bonnes pratiques pour le développement

Adopter une méthodologie d’intégration continueVise à l’automatisation des tâches (compilation, tests unitaires etfonctionnels, tests de performances, validation, documentation ...)

Adopter une méthodologie agile(d’après Wikipédia)

• les individus et leurs interactions, plus que les processus et les outils• des logiciels opérationnels, plus qu’une documentation exhaustive• la collaboration avec les clients, plus que la négociation contractuelle• l’adaptation au changement, plus que le suivi d’un plan

4 / 70

Page 5: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

... et outils

En pratique

• Code partagé et versionné• Modifications fréquentes, testées automatiquement• Souplesse dans les développements• Version fonctionnelle toujours disponible(tests, documentation, démonstration ou production)

Nécessite l’utilisation d’un minimum d’outils de génie logiciel

5 / 70

Page 6: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Table des matières

1 Contexte

2 Systèmes de gestion de versions

3 Git

4 Exemple local

5 Exemple collaboratif

6 Outils, forges, serveurs et services web

6 / 70

Page 7: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

À quoi ça sert ?

Systèmes de gestion de version (en anglais Version System Control)

Sert à :

• enregistrer et sauvegarder les développements au cours du temps• revenir en arrière sur une version spécifique• collaborer sur un même document• enregistrer les modifications avec auteur et date

7 / 70

Page 8: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Historique des principaux opensources (1/2)

• Système local• RCS (Revision Control System)les développeurs partagent le même système de fichiers

• Système client-serveur• CVS (Concurrent Versions System)dérivé de RCS, les développeurs partagent un dépôt unique

• Subversion (SVN)dérivé de CVS, fusions facilitées

8 / 70

Page 9: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Historique des principaux opensources (2/2)Distributed Verson Control System (DVCS)

• Système décentralisé• Gitconçu par Linus Torvalds pour le projet du noyau Linux en 2005

• Mercurialen Python, évolution depuis 2005 de l’opensource de BitKeeper,anciennement utilisé pour le développement du noyau Linux(2002-2005)

• Bazaaren Python, depuis 2005

• Fossillen C, depuis 2006

• Veracitydepuis 2011intègre le suivi des bug et les outils de développement agilepas de rebase

9 / 70

Page 10: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Modes de travail (1/3)

Projet local

fichier Révision 3

Révision 2

Révision 1

Généralement facile d’utilisation, léger à configurerCollaboration pas vraiment prévue

10 / 70

Page 11: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Modes de travail (2/3)Projet centralisé

fichier

Machine A

fichier

Machine B

Révision 3

Révision 2

Révision 1

Serveur

Partage d’une archive sur un serveur uniqueAccès distant au serveurNécessite une connection internet

11 / 70

Page 12: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Modes de travail (3/3)Projet distribué

fichier

Révision 3

Révision 2

Révision 1

Machine A

fichier

Révision 3

Révision 2

Révision 1

Machine B

Révision 3

Révision 2

Révision 1

Chacun travaille sur un clone du dépôt, gère des dépôts public/privéPermet de collaborer de différentes manières avec différentes personnessur un même projetPas besoin d’accès internet

12 / 70

Page 13: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Modes d’organisation (1/3)

Organisation centralisée

Dépôt partagé

Développeur Développeur Développeur

Chacun échange avec le dépôt de référence.Les développeurs doivent mettre à jour leurs clonesavant de modifier le dépôt.

13 / 70

Page 14: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Modes d’organisation (2/3)

Organisation via un intégrateur

Dépôtde

réference

Développeurpublique

Développeurpublique

Intégrateur Développeurprivé

Développeurprivé

Chacun travaille avec un clone du dépôt de référence.Chacun dépose ses développements dans un dépôt privé.Chacun demande à l’intégrateur de déposer dans la référence.

14 / 70

Page 15: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Modes d’organisation (3/3)

Organisation en sous-projet

Dépôtde

réference

Dépôtprojet

Dépôtprojet

Intégrateur Dév. Dév. Dév. Dév.

Adapté à des gros projets, avec sous-parties de développement.

15 / 70

Page 16: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Table des matières

1 Contexte

2 Systèmes de gestion de versions

3 Git

4 Exemple local

5 Exemple collaboratif

6 Outils, forges, serveurs et services web

16 / 70

Page 17: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Apprendre git

https://www.atlassian.com/git/tutorials/http://rogerdudler.github.io/git-guide/index.fr.html

http://www.le-fab-lab.com/memo-git.htmlhttp://www.le-fab-lab.com/git-travail-en-local.htmlhttp://www.le-fab-lab.com/git-depot-distant.html

https://git-scm.com/

17 / 70

Page 18: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Limitations

Ce que Git gère très bien :3 les scripts ou code de calcul3 les documents LATEX3 les fichiers texte

(configuration, scripts etc.)3 les sources html

Ce que Git gère mal :7 les gros fichiers binaires7 le texte formaté (documents de

type Microsoft Office,OpenOffice etc.)

7 les bases de données (typeMySQL)

18 / 70

Page 19: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Contournements et solutions possiblesSolutions pour gérer les gros fichiers binaires :

• git-annex• git-fat, git-lfs• git-bigfile• git-bigstore• git-sym• etc.

Gestion des fichiers binaires de type Microsoft Office, PDF etc. :3 versionner les fichiers et combiner avec un outil exhibant les

différences comme Word Diff, Pandoc etc.Gestion des bases de données MySQL :3 versionner la sortie de mysql dump

⇒ Combiner les outils

19 / 70

Page 20: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Principales commandes

Commandes de base

$ git status ; git log; git diff$ git add; git commit

Commandes de branches

$ git branch$ git checkout$ git merge

Commandes de partage

$ git push$ git fetch$ git pull

20 / 70

Page 21: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Configurer git

$ git config --global user.name "Anne Cadiou "$ git config --global user. email "anne.cadiou@ec -lyon.fr"

$ git config --global core. editor vim$ git config --global diff. external vimdiff$ git config --global color .ui true$ git config --global merge .tool vimdiff...$ git config --list

Stocké dans$ ls ~/. gitconfig

21 / 70

Page 22: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Exemple de configuration

[user]name = Anne Cadiouemail = anne.cadiou@ec -lyon.fr

[core]editor = vim

[ color ]ui = true

[ merge ]tool = vimdiff

[ alias ]lg = log --pretty = format :\"%h%x09%an%x09%ad%x09%s\"

22 / 70

Page 23: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Principe de base

Cycle de vie d’un fichier

répertoire de travail

non suivi à jour modifié

zone d’index

ajouter

retireréditer indexer

git

extraction

indexation

enregistrement

23 / 70

Page 24: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Table des matières

1 Contexte

2 Systèmes de gestion de versions

3 Git

4 Exemple local

5 Exemple collaboratif

6 Outils, forges, serveurs et services web

24 / 70

Page 25: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Projet de développement local

Répertoire du projet

cadiou@local :~$ cd democadiou@local :~/ demo$ lslogocalcul .png projet .tex

Initialiser le dépôt

cadiou@local :~/ demo$ git init

Initialized empty Git repository in/home/ cadiou /demo /. git/

25 / 70

Page 26: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Projet de développement local

Répertoire du projet

cadiou@local :~$ cd democadiou@local :~/ demo$ lslogocalcul .png projet .tex

Initialiser le dépôt

cadiou@local :~/ demo$ git init

Initialized empty Git repository in/home/ cadiou /demo /. git/

25 / 70

Page 27: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Structure locale

cadiou@moon : [ master ] ~/ demo$ ls -a

. .. bib.bib .git logocalcul .png projet .tex README .txt

cadiou@moon : [ master ] ~/ demo$ cat .git/ config

[core]repositoryformatversion = 0filemode = truebare = falselogallrefupdates = true

26 / 70

Page 28: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Structure locale

cadiou@moon : [ master ] ~/ demo$ ls -a

. .. bib.bib .git logocalcul .png projet .tex README .txt

cadiou@moon : [ master ] ~/ demo$ cat .git/ config

[core]repositoryformatversion = 0filemode = truebare = falselogallrefupdates = true

26 / 70

Page 29: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Structure locale

cadiou@moon : [ master ] ~/ demo$ ls -a

. .. bib.bib .git logocalcul .png projet .tex README .txt

cadiou@moon : [ master ] ~/ demo$ cat .git/ config

[core]repositoryformatversion = 0filemode = truebare = falselogallrefupdates = true

26 / 70

Page 30: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Exclure des fichiers

cadiou@moon : [ master ] ~/ demo$ vi . gitignore

.*. swp*. out*. log*. vrb*. nav*. aux*. toc*. blg

27 / 70

Page 31: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Exclure des fichiers

cadiou@moon : [ master ] ~/ demo$ vi . gitignore

.*. swp*. out*. log*. vrb*. nav*. aux*. toc*. blg

27 / 70

Page 32: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

État du projet

cadiou@local :~/ demo$ git status

On branch master

Initial commit

Untracked files :(use "git add <file >..." to include in what will be

committed )

logocalcul .pngprojet .tex

nothing added to commit but untracked files present (use "git add" to track )

28 / 70

Page 33: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

État du projet

cadiou@local :~/ demo$ git status

On branch master

Initial commit

Untracked files :(use "git add <file >..." to include in what will be

committed )

logocalcul .pngprojet .tex

nothing added to commit but untracked files present (use "git add" to track )

28 / 70

Page 34: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Modification du projet

Ajout des fichiers dans la liste des fichiers à suivre

cadiou@local :~/ demo$ git add --allcadiou@local :~/ demo$ git status

On branch master

Initial commit

Changes to be committed :(use "git rm --cached <file >..." to unstage )

new file: logocalcul .pngnew file: projet .tex

29 / 70

Page 35: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Modification du projet

Ajout des fichiers dans la liste des fichiers à suivre

cadiou@local :~/ demo$ git add --allcadiou@local :~/ demo$ git status

On branch master

Initial commit

Changes to be committed :(use "git rm --cached <file >..." to unstage )

new file: logocalcul .pngnew file: projet .tex

29 / 70

Page 36: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Révision les fichiersConfier une révision au dépôt

cadiou@local :~/ demo$ git commit -m " dépôt initial "

[ master (root - commit ) 35 dbd34 ] dépôt initial2 files changed , 0 insertions (+) , 0 deletions (-)create mode 100644 logocalcul .pngcreate mode 100644 projet .tex

Consulter le journal de bord

cadiou@local :~/ demo$ git log

commit 35 dbd347c4264548fe2140bc36a49d5b08416fc9Author : Anne Cadiou <anne.cadiou@ec -lyon.fr >Date: Thu Jan 14 15:18:41 2016 +0100

dépôt initial

30 / 70

Page 37: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Révision les fichiersConfier une révision au dépôt

cadiou@local :~/ demo$ git commit -m " dépôt initial "

[ master (root - commit ) 35 dbd34 ] dépôt initial2 files changed , 0 insertions (+) , 0 deletions (-)create mode 100644 logocalcul .pngcreate mode 100644 projet .tex

Consulter le journal de bord

cadiou@local :~/ demo$ git log

commit 35 dbd347c4264548fe2140bc36a49d5b08416fc9Author : Anne Cadiou <anne.cadiou@ec -lyon.fr >Date: Thu Jan 14 15:18:41 2016 +0100

dépôt initial

30 / 70

Page 38: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Révision les fichiersConfier une révision au dépôt

cadiou@local :~/ demo$ git commit -m " dépôt initial "

[ master (root - commit ) 35 dbd34 ] dépôt initial2 files changed , 0 insertions (+) , 0 deletions (-)create mode 100644 logocalcul .pngcreate mode 100644 projet .tex

Consulter le journal de bord

cadiou@local :~/ demo$ git log

commit 35 dbd347c4264548fe2140bc36a49d5b08416fc9Author : Anne Cadiou <anne.cadiou@ec -lyon.fr >Date: Thu Jan 14 15:18:41 2016 +0100

dépôt initial

30 / 70

Page 39: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

État du suivi

cadiou@local :~/ demo$ git status

On branch masternothing to commit , working directory clean

Après modification d’un fichier

On branch masterChanges 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 : projet .tex

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

31 / 70

Page 40: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

État du suivi

cadiou@local :~/ demo$ git status

On branch masternothing to commit , working directory clean

Après modification d’un fichier

On branch masterChanges 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 : projet .tex

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

31 / 70

Page 41: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

État du suivi

cadiou@local :~/ demo$ git status

On branch masternothing to commit , working directory clean

Après modification d’un fichier

On branch masterChanges 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 : projet .tex

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

31 / 70

Page 42: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Enregistrement des modifications

cadiou@local :~/ demo$ git commit -m " ajout texte " projet .tex

[ master 9002 ccb] ajout texte1 file changed , 2 insertions (+)

cadiou@local :~/ demo$ git log

commit 9002 ccbab0a0cca2941cec9ee3182defe787a4b7Author : Anne Cadiou <anne.cadiou@ec -lyon.fr >Date: Thu Jan 14 17:38:04 2016 +0100

ajout texte

commit 35 dbd347c4264548fe2140bc36a49d5b08416fc9Author : Anne Cadiou <anne.cadiou@ec -lyon.fr >Date: Thu Jan 14 15:18:41 2016 +0100

dépôt initial

32 / 70

Page 43: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Enregistrement des modifications

cadiou@local :~/ demo$ git commit -m " ajout texte " projet .tex

[ master 9002 ccb] ajout texte1 file changed , 2 insertions (+)

cadiou@local :~/ demo$ git log

commit 9002 ccbab0a0cca2941cec9ee3182defe787a4b7Author : Anne Cadiou <anne.cadiou@ec -lyon.fr >Date: Thu Jan 14 17:38:04 2016 +0100

ajout texte

commit 35 dbd347c4264548fe2140bc36a49d5b08416fc9Author : Anne Cadiou <anne.cadiou@ec -lyon.fr >Date: Thu Jan 14 15:18:41 2016 +0100

dépôt initial

32 / 70

Page 44: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Enregistrement des modifications

cadiou@local :~/ demo$ git commit -m " ajout texte " projet .tex

[ master 9002 ccb] ajout texte1 file changed , 2 insertions (+)

cadiou@local :~/ demo$ git log

commit 9002 ccbab0a0cca2941cec9ee3182defe787a4b7Author : Anne Cadiou <anne.cadiou@ec -lyon.fr >Date: Thu Jan 14 17:38:04 2016 +0100

ajout texte

commit 35 dbd347c4264548fe2140bc36a49d5b08416fc9Author : Anne Cadiou <anne.cadiou@ec -lyon.fr >Date: Thu Jan 14 15:18:41 2016 +0100

dépôt initial

32 / 70

Page 45: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Comparaison entre les révisions

cadiou@local :~/ demo$ git diff 9002 ccb 35 dbd34

diff --git a/ projet .tex b/ projet .texindex c50c265 .. e69de29 100644--- a/ projet .tex+++ b/ projet .tex@@ -1,2 +0 ,0 @@-% Ajout d’un texte-

cadiou@local :~/ demo$ git diff HEAD 35 dbd34

cadiou@local :~/ demo$ git difftool HEAD 35 dbd34

33 / 70

Page 46: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Comparaison entre les révisions

cadiou@local :~/ demo$ git diff 9002 ccb 35 dbd34

diff --git a/ projet .tex b/ projet .texindex c50c265 .. e69de29 100644--- a/ projet .tex+++ b/ projet .tex@@ -1,2 +0 ,0 @@-% Ajout d’un texte-

cadiou@local :~/ demo$ git diff HEAD 35 dbd34

cadiou@local :~/ demo$ git difftool HEAD 35 dbd34

33 / 70

Page 47: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Emploi de raccourcis

Modification et ajout de fichiers

cadiou@local :~/ demo$ git status -s

M projet .tex?? README .txt

cadiou@local :~/ demo$ git add README .txtcadiou@local :~/ demo$ git status -s

A README .txtM projet .tex

34 / 70

Page 48: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Emploi de raccourcis

Modification et ajout de fichiers

cadiou@local :~/ demo$ git status -s

M projet .tex?? README .txt

cadiou@local :~/ demo$ git add README .txtcadiou@local :~/ demo$ git status -s

A README .txtM projet .tex

34 / 70

Page 49: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Emploi de raccourcis

Modification et ajout de fichiers

cadiou@local :~/ demo$ git status -s

M projet .tex?? README .txt

cadiou@local :~/ demo$ git add README .txtcadiou@local :~/ demo$ git status -s

A README .txtM projet .tex

34 / 70

Page 50: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Journal de bord

cadiou@local :~/ demo$ git commit -m " ajout titre " -a

[ master 145 b9b5] ajout titre2 files changed , 2 insertions (+)create mode 100644 README .txt

cadiou@local :~/ demo$ git log --oneline

145 b9b5 ajout titre9002 ccb ajout texte35 dbd34 dépôt initial

35 / 70

Page 51: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Journal de bord

cadiou@local :~/ demo$ git commit -m " ajout titre " -a

[ master 145 b9b5] ajout titre2 files changed , 2 insertions (+)create mode 100644 README .txt

cadiou@local :~/ demo$ git log --oneline

145 b9b5 ajout titre9002 ccb ajout texte35 dbd34 dépôt initial

35 / 70

Page 52: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Journal de bord

cadiou@local :~/ demo$ git commit -m " ajout titre " -a

[ master 145 b9b5] ajout titre2 files changed , 2 insertions (+)create mode 100644 README .txt

cadiou@local :~/ demo$ git log --oneline

145 b9b5 ajout titre9002 ccb ajout texte35 dbd34 dépôt initial

35 / 70

Page 53: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Alias

cadiou@local :~/ demo$ git log --pretty = format :\"%h%x09%an%x09%ad%x09%s\"

145 b9b5 Anne Cadiou Thu Jan 14 18:23:21 2016 +0100ajout titre

9002 ccb Anne Cadiou Thu Jan 14 17:38:04 2016 +0100ajout texte

35 dbd34 Anne Cadiou Thu Jan 14 15:18:41 2016 +0100dépôt initial

git config --global alias .lg ’ log --pretty = format :"%h%x09%an%x09%ad%x09%s"’

36 / 70

Page 54: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Retour en arrière145 b9b5 ajout titre9002 ccb ajout texte35 dbd34 dépôt initial

cadiou@local :~/ demo$ git checkout 9002 ccb projet .texcadiou@local :~/ demo$ git status -s

M projet .tex

Le fichier est comme dans 9002ccb

cadiou@local :~/ demo$ git commit -m " retour vers 9002 ccb" -a

[ master b1b2c39 ] retour vers 9002 ccb1 file changed , 1 deletion (-)

37 / 70

Page 55: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Retour en arrière145 b9b5 ajout titre9002 ccb ajout texte35 dbd34 dépôt initial

cadiou@local :~/ demo$ git checkout 9002 ccb projet .texcadiou@local :~/ demo$ git status -s

M projet .tex

Le fichier est comme dans 9002ccb

cadiou@local :~/ demo$ git commit -m " retour vers 9002 ccb" -a

[ master b1b2c39 ] retour vers 9002 ccb1 file changed , 1 deletion (-)

37 / 70

Page 56: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Retour en arrière145 b9b5 ajout titre9002 ccb ajout texte35 dbd34 dépôt initial

cadiou@local :~/ demo$ git checkout 9002 ccb projet .texcadiou@local :~/ demo$ git status -s

M projet .tex

Le fichier est comme dans 9002ccb

cadiou@local :~/ demo$ git commit -m " retour vers 9002 ccb" -a

[ master b1b2c39 ] retour vers 9002 ccb1 file changed , 1 deletion (-)

37 / 70

Page 57: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Annulation

cadiou@local :~/ demo$ git revert HEAD

[ master e03841b ] Revert " retour vers 9002 ccb"1 file changed , 1 insertion (+)

cadiou@local :~/ demo$ git log --oneline

e03841b Revert " retour vers 9002 ccb"b1b2c39 retour vers 9002 ccb145 b9b5 ajout titre9002 ccb ajout texte35 dbd34 dépôt initial

Le fichier est comme 145b9b5

38 / 70

Page 58: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Annulation

cadiou@local :~/ demo$ git revert HEAD

[ master e03841b ] Revert " retour vers 9002 ccb"1 file changed , 1 insertion (+)

cadiou@local :~/ demo$ git log --oneline

e03841b Revert " retour vers 9002 ccb"b1b2c39 retour vers 9002 ccb145 b9b5 ajout titre9002 ccb ajout texte35 dbd34 dépôt initial

Le fichier est comme 145b9b5

38 / 70

Page 59: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Annulation

cadiou@local :~/ demo$ git revert HEAD

[ master e03841b ] Revert " retour vers 9002 ccb"1 file changed , 1 insertion (+)

cadiou@local :~/ demo$ git log --oneline

e03841b Revert " retour vers 9002 ccb"b1b2c39 retour vers 9002 ccb145 b9b5 ajout titre9002 ccb ajout texte35 dbd34 dépôt initial

Le fichier est comme 145b9b5

38 / 70

Page 60: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Branches

Branches

cadiou@local :~/ demo$ git branch

* master

39 / 70

Page 61: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

ConfigurationAjouter à son environnement (.bashrc)

function parse_git_branch {git branch --no - color 2> /dev/null | sed -e ’/^[^*]/d’ -e ’s

/* \(.*\) /\1/ ’}function git - track {CURRENT_BRANCH =$( parse_git_branch )git - config branch . $CURRENT_BRANCH . remote $1git - config branch . $CURRENT_BRANCH . merge refs/ heads /

$CURRENT_BRANCH}function parse_git_branch_and_add_brackets {git branch --no - color 2> /dev/null | sed -e ’/^[^*]/d’ -e ’s

/* \(.*\) /\ \[\1\]/ ’}

PS1 ="\ u@\h:\$( parse_git_branch_and_add_brackets ) \w\$ "

40 / 70

Page 62: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Création d’une nouvelle branche

cadiou@moon : [ master ] ~/ demo$ git branch -a* master

cadiou@moon : [ master ] ~/ demo$ git branch developcadiou@moon : [ master ] ~/ demo$ git branchdevelop* master

cadiou@moon : [ master ] ~/ demo$ git checkout develop* developmastercadiou@moon : [ develop ] ~/ demo$

Tout en une seule commande

cadiou@moon : [ master ] ~/ demo$ git checkout -b developSwitched to a new branch ’develop ’cadiou@moon : [ develop ] ~/ demo$

41 / 70

Page 63: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Fusion

cadiou@moon : [ master ] ~/ demo$ git merge developcadiou@moon : [ master ] ~/ demo$ git log --oneline --graph --

color

* 2136676 après fusion|\| * 457 c155 ajout références| * 4 ba2d09 ajout bibliographie* | fc6cc31 après branche|/* e03841b Revert " retour vers 9002 ccb"* b1b2c39 retour vers 9002 ccb* 145 b9b5 ajout titre* 9002 ccb ajout texte* 35 dbd34 dépôt initial

42 / 70

Page 64: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Fusion

cadiou@moon : [ master ] ~/ demo$ git merge developcadiou@moon : [ master ] ~/ demo$ git log --oneline --graph --

color

* 2136676 après fusion|\| * 457 c155 ajout références| * 4 ba2d09 ajout bibliographie* | fc6cc31 après branche|/* e03841b Revert " retour vers 9002 ccb"* b1b2c39 retour vers 9002 ccb* 145 b9b5 ajout titre* 9002 ccb ajout texte* 35 dbd34 dépôt initial

42 / 70

Page 65: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Outils d’arbitrage

cadiou@moon : [ master ] ~/ demo$ git difftool 9002 ccb 145 b9b5projet .tex

cadiou@moon : [ master ] ~/ demo$ git mergetool developcadiou@moon : [ master ] ~/ demo$ git mergetool -t meldcadiou@moon : [ master ] ~/ demo$ git config --global merge .tool

kdiff3cadiou@moon : [ master ] ~/ demo$ git config --global merge .tool

vimdiff

dans .gitconfig[ merge ]

tool = vimdiff

43 / 70

Page 66: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Destruction des branches

cadiou@moon : [ master ] ~/ demo$ git branch -d developDeleted branch develop (was 387526 b).

cadiou@moon : [ master ] ~/ demo$ git branch -a* master

44 / 70

Page 67: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Table des matières

1 Contexte

2 Systèmes de gestion de versions

3 Git

4 Exemple local

5 Exemple collaboratif

6 Outils, forges, serveurs et services web

45 / 70

Page 68: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Initialiser le dépôt

Bonne pratique (extension .git)

souris@distant :~$ mkdir demo.git

Initialiser le dépôt

souris@distant :~/ demo.git$ git init --bare

Initialized empty Git repository in /home/ souris /demo.git/

46 / 70

Page 69: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Initialiser le dépôt

Bonne pratique (extension .git)

souris@distant :~$ mkdir demo.git

Initialiser le dépôt

souris@distant :~/ demo.git$ git init --bare

Initialized empty Git repository in /home/ souris /demo.git/

46 / 70

Page 70: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Structure

souris@distant :~/ demo.git$ ls

branches config description HEAD hooks info objectsrefs

souris@distant :~/ demo.git$ cat config

[core]repositoryformatversion = 0filemode = truebare = true

47 / 70

Page 71: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Structure

souris@distant :~/ demo.git$ ls

branches config description HEAD hooks info objectsrefs

souris@distant :~/ demo.git$ cat config

[core]repositoryformatversion = 0filemode = truebare = true

47 / 70

Page 72: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Structure

souris@distant :~/ demo.git$ ls

branches config description HEAD hooks info objectsrefs

souris@distant :~/ demo.git$ cat config

[core]repositoryformatversion = 0filemode = truebare = true

47 / 70

Page 73: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Structure

souris@distant :~/ demo.git$ ls

branches config description HEAD hooks info objectsrefs

souris@distant :~/ demo.git$ cat config

[core]repositoryformatversion = 0filemode = truebare = true

47 / 70

Page 74: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Cloner

Machine locale de Bernard

bernard@pcbernard :~$ git clone souris@distant :~/ demo.git

Cloning into ’demo ’...warning : You appear to have cloned an empty repository .done.

bernard@pcbernard :~$ cd demobernard@pcbernard :~/ demo$ ls -a

. .. .git

48 / 70

Page 75: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Cloner

Machine locale de Bernard

bernard@pcbernard :~$ git clone souris@distant :~/ demo.git

Cloning into ’demo ’...warning : You appear to have cloned an empty repository .done.

bernard@pcbernard :~$ cd demobernard@pcbernard :~/ demo$ ls -a

. .. .git

48 / 70

Page 76: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Cloner

Machine locale de Bernard

bernard@pcbernard :~$ git clone souris@distant :~/ demo.git

Cloning into ’demo ’...warning : You appear to have cloned an empty repository .done.

bernard@pcbernard :~$ cd demobernard@pcbernard :~/ demo$ ls -a

. .. .git

48 / 70

Page 77: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Structure du clone

bernard@pcbernard :~/ demo$ cat .git/ config

[core]repositoryformatversion = 0filemode = truebare = falselogallrefupdates = true

[ remote " origin "]url = souris@distant :demo.gitfetch = +refs/ heads /*: refs/ remotes / origin /*

[ branch " master "]remote = originmerge = refs/ heads / master

49 / 70

Page 78: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Structure du clone

bernard@pcbernard :~/ demo$ cat .git/ config

[core]repositoryformatversion = 0filemode = truebare = falselogallrefupdates = true

[ remote " origin "]url = souris@distant :demo.gitfetch = +refs/ heads /*: refs/ remotes / origin /*

[ branch " master "]remote = originmerge = refs/ heads / master

49 / 70

Page 79: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Échanges avec le dépôt

bernard@pcbernard :~/ demo$ vi fichier .texbernard@pcbernard :~/ demo$ git add fichier .texbernard@pcbernard :~/ demo$ git commit -m " Ajout de fichier "

-a

[ master (root - commit ) 4 ba89d5 ] Ajout de fichier1 file changed , 2 insertions (+)create mode 100644 fichier .tex

bernard@pcbernard :~/ demo$ git push origin master

Counting objects : 3, done.Writing objects : 100% (3/3) , 240 bytes | 0 bytes /s, done.Total 3 ( delta 0) , reused 0 ( delta 0)To souris@distant :TEST/demo.git

* [new branch ] master -> master

50 / 70

Page 80: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Échanges avec le dépôt

bernard@pcbernard :~/ demo$ vi fichier .texbernard@pcbernard :~/ demo$ git add fichier .texbernard@pcbernard :~/ demo$ git commit -m " Ajout de fichier "

-a

[ master (root - commit ) 4 ba89d5 ] Ajout de fichier1 file changed , 2 insertions (+)create mode 100644 fichier .tex

bernard@pcbernard :~/ demo$ git push origin master

Counting objects : 3, done.Writing objects : 100% (3/3) , 240 bytes | 0 bytes /s, done.Total 3 ( delta 0) , reused 0 ( delta 0)To souris@distant :TEST/demo.git

* [new branch ] master -> master

50 / 70

Page 81: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Échanges avec le dépôt

bernard@pcbernard :~/ demo$ vi fichier .texbernard@pcbernard :~/ demo$ git add fichier .texbernard@pcbernard :~/ demo$ git commit -m " Ajout de fichier "

-a

[ master (root - commit ) 4 ba89d5 ] Ajout de fichier1 file changed , 2 insertions (+)create mode 100644 fichier .tex

bernard@pcbernard :~/ demo$ git push origin master

Counting objects : 3, done.Writing objects : 100% (3/3) , 240 bytes | 0 bytes /s, done.Total 3 ( delta 0) , reused 0 ( delta 0)To souris@distant :TEST/demo.git

* [new branch ] master -> master

50 / 70

Page 82: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Échanges avec le dépôt

bernard@pcbernard :~/ demo$ vi fichier .texbernard@pcbernard :~/ demo$ git add fichier .texbernard@pcbernard :~/ demo$ git commit -m " Ajout de fichier "

-a

[ master (root - commit ) 4 ba89d5 ] Ajout de fichier1 file changed , 2 insertions (+)create mode 100644 fichier .tex

bernard@pcbernard :~/ demo$ git push origin master

Counting objects : 3, done.Writing objects : 100% (3/3) , 240 bytes | 0 bytes /s, done.Total 3 ( delta 0) , reused 0 ( delta 0)To souris@distant :TEST/demo.git

* [new branch ] master -> master

50 / 70

Page 83: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Bianca veut participer...

bianca@pcbianca :~$ git clone souris@distant :~/ demo.git

Cloning into ’demo ’...remote : Counting objects : 3, done.remote : Total 3 ( delta 0) , reused 0 ( delta 0)Receiving objects : 100% (3/3) , done.Checking connectivity ... done.

bianca@pcbianca :~$ cd demobianca@pcbianca :~/ demo$ ls

fichier .tex

bianca@pcbianca :~/ demo$ git lg ( alias de log --pretty = format:\"%h%x09%an%x09%ad%x09%s\")

ba89d5 Bernard Mouse Sun Jan 17 18:10:43 2016 +0100Ajout de fichier

51 / 70

Page 84: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Bianca veut participer...

bianca@pcbianca :~$ git clone souris@distant :~/ demo.git

Cloning into ’demo ’...remote : Counting objects : 3, done.remote : Total 3 ( delta 0) , reused 0 ( delta 0)Receiving objects : 100% (3/3) , done.Checking connectivity ... done.

bianca@pcbianca :~$ cd demobianca@pcbianca :~/ demo$ ls

fichier .tex

bianca@pcbianca :~/ demo$ git lg ( alias de log --pretty = format:\"%h%x09%an%x09%ad%x09%s\")

ba89d5 Bernard Mouse Sun Jan 17 18:10:43 2016 +0100Ajout de fichier

51 / 70

Page 85: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Bianca veut participer...

bianca@pcbianca :~$ git clone souris@distant :~/ demo.git

Cloning into ’demo ’...remote : Counting objects : 3, done.remote : Total 3 ( delta 0) , reused 0 ( delta 0)Receiving objects : 100% (3/3) , done.Checking connectivity ... done.

bianca@pcbianca :~$ cd demobianca@pcbianca :~/ demo$ ls

fichier .tex

bianca@pcbianca :~/ demo$ git lg ( alias de log --pretty = format:\"%h%x09%an%x09%ad%x09%s\")

ba89d5 Bernard Mouse Sun Jan 17 18:10:43 2016 +0100Ajout de fichier

51 / 70

Page 86: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Bianca veut participer...

bianca@pcbianca :~$ git clone souris@distant :~/ demo.git

Cloning into ’demo ’...remote : Counting objects : 3, done.remote : Total 3 ( delta 0) , reused 0 ( delta 0)Receiving objects : 100% (3/3) , done.Checking connectivity ... done.

bianca@pcbianca :~$ cd demobianca@pcbianca :~/ demo$ ls

fichier .tex

bianca@pcbianca :~/ demo$ git lg ( alias de log --pretty = format:\"%h%x09%an%x09%ad%x09%s\")

ba89d5 Bernard Mouse Sun Jan 17 18:10:43 2016 +0100Ajout de fichier

51 / 70

Page 87: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Bianca veut participer...

bianca@pcbianca :~$ git clone souris@distant :~/ demo.git

Cloning into ’demo ’...remote : Counting objects : 3, done.remote : Total 3 ( delta 0) , reused 0 ( delta 0)Receiving objects : 100% (3/3) , done.Checking connectivity ... done.

bianca@pcbianca :~$ cd demobianca@pcbianca :~/ demo$ ls

fichier .tex

bianca@pcbianca :~/ demo$ git lg ( alias de log --pretty = format:\"%h%x09%an%x09%ad%x09%s\")

ba89d5 Bernard Mouse Sun Jan 17 18:10:43 2016 +0100Ajout de fichier

51 / 70

Page 88: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Bianca veut participer...

bianca@pcbianca :~$ git clone souris@distant :~/ demo.git

Cloning into ’demo ’...remote : Counting objects : 3, done.remote : Total 3 ( delta 0) , reused 0 ( delta 0)Receiving objects : 100% (3/3) , done.Checking connectivity ... done.

bianca@pcbianca :~$ cd demobianca@pcbianca :~/ demo$ ls

fichier .tex

bianca@pcbianca :~/ demo$ git lg ( alias de log --pretty = format:\"%h%x09%an%x09%ad%x09%s\")

ba89d5 Bernard Mouse Sun Jan 17 18:10:43 2016 +0100Ajout de fichier

51 / 70

Page 89: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Collaboration en image

fichier.tex

Dépôtfichier.tex

Dépôt de Bernard

fichier.tex

Bernard

clone

52 / 70

Page 90: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Collaboration en image

fichier.tex

Dépôtfichier.tex

Dépôt de Bernard

fichier.tex

Bernard

fichier.tex

Dépôt de Bianca

fichier.tex

Biancaclone

52 / 70

Page 91: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Collaboration en image

fichier.tex

Dépôtfichier.tex

Dépôt de Bernard

fichier.tex

Bernard

fichier.tex

Dépôt de Bianca

fichier.tex

Bianca

53 / 70

Page 92: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Collaboration en image

fichier.tex

Dépôtfichier.tex

Dépôt de Bernard

fichier.tex

Bernard

commit

fichier.tex

Dépôt de Bianca

fichier.tex

Bianca

commit

53 / 70

Page 93: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Collaboration en image

fichier.tex

Dépôtfichier.tex

Dépôt de Bernard

fichier.tex

Bernard

fichier.tex

Dépôt de Bianca

fichier.tex

Biancapush

53 / 70

Page 94: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Collaboration en image

fichier.tex

Dépôtfichier.tex

Dépôt de Bernard

fichier.tex

Bernard

fichier.tex

Dépôt de Bianca

fichier.tex

Bianca

push

53 / 70

Page 95: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Collaboration en image

fichier.tex

Dépôtfichier.tex

Dépôt de Bernard

fichier.tex

Bernard

fichier.tex

Dépôt de Bianca

fichier.tex

Bianca

pull

53 / 70

Page 96: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Collaboration en image

fichier.tex

Dépôtfichier.tex

Dépôt de Bernard

fichier.tex

Bernard

fichier.tex

Dépôt de Bianca

fichier.tex

Bianca

push

53 / 70

Page 97: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Collaboration en image

fichier.tex

Dépôtfichier.tex

Dépôt de Bernard

fichier.tex

Bernard

fichier.tex

Dépôt de Bianca

fichier.tex

Biancapull

53 / 70

Page 98: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Travail simultané de Bernard et Bianca

bianca@pcbianca :~/ demo$ vi fichier .texbianca@pcbianca :~/ demo$ git commit -m ’modification de

Bianca ’ -a

[ master 94 ae224 ] modification de Bianca1 file changed , 1 insertion (+)

bernard@pcbernard :~/ demo$ vi fichier .texbernard@pcbernard :~/ demo$ git commit -m ’modification de

Bernard ’ -a

[ master 52 d0dce ] modification de Bernard1 file changed , 1 insertion (+)

54 / 70

Page 99: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Travail simultané de Bernard et Bianca

bianca@pcbianca :~/ demo$ vi fichier .texbianca@pcbianca :~/ demo$ git commit -m ’modification de

Bianca ’ -a

[ master 94 ae224 ] modification de Bianca1 file changed , 1 insertion (+)

bernard@pcbernard :~/ demo$ vi fichier .texbernard@pcbernard :~/ demo$ git commit -m ’modification de

Bernard ’ -a

[ master 52 d0dce ] modification de Bernard1 file changed , 1 insertion (+)

54 / 70

Page 100: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Travail simultané de Bernard et Bianca

bianca@pcbianca :~/ demo$ vi fichier .texbianca@pcbianca :~/ demo$ git commit -m ’modification de

Bianca ’ -a

[ master 94 ae224 ] modification de Bianca1 file changed , 1 insertion (+)

bernard@pcbernard :~/ demo$ vi fichier .texbernard@pcbernard :~/ demo$ git commit -m ’modification de

Bernard ’ -a

[ master 52 d0dce ] modification de Bernard1 file changed , 1 insertion (+)

54 / 70

Page 101: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Travail simultané de Bernard et Bianca

bianca@pcbianca :~/ demo$ vi fichier .texbianca@pcbianca :~/ demo$ git commit -m ’modification de

Bianca ’ -a

[ master 94 ae224 ] modification de Bianca1 file changed , 1 insertion (+)

bernard@pcbernard :~/ demo$ vi fichier .texbernard@pcbernard :~/ demo$ git commit -m ’modification de

Bernard ’ -a

[ master 52 d0dce ] modification de Bernard1 file changed , 1 insertion (+)

54 / 70

Page 102: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Bianca dépose ses modifications

bianca@pcbianca :~/ demo$ git push origin master

Counting objects : 5, done.Delta compression using up to 4 threads .Compressing objects : 100% (2/2) , done.Writing objects : 100% (3/3) , 299 bytes | 0 bytes /s, done.Total 3 ( delta 0) , reused 0 ( delta 0)To souris@distant :~/ demo.git

4 ba89d5 ..94 ae224 master -> master

55 / 70

Page 103: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Bianca dépose ses modifications

bianca@pcbianca :~/ demo$ git push origin master

Counting objects : 5, done.Delta compression using up to 4 threads .Compressing objects : 100% (2/2) , done.Writing objects : 100% (3/3) , 299 bytes | 0 bytes /s, done.Total 3 ( delta 0) , reused 0 ( delta 0)To souris@distant :~/ demo.git

4 ba89d5 ..94 ae224 master -> master

55 / 70

Page 104: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Bernard échoue avant de se synchroniser

bernard@pcbernard :~/ demo$ git push origin master

To souris@distant :~/ demo.git! [ rejected ] master -> master ( fetch first )

error : failed to push some refs to ’souris@distant :~/ demo.git ’

hint: Updates were rejected because the remote contains workthat you do

hint: not have locally . This is usually caused by anotherrepository pushing

hint: to the same ref. You may want to first integrate theremote changes

hint: (e.g., ’git pull ... ’) before pushing again .hint: See the ’Note about fast -forwards ’ in ’git push --help

’ for details .

56 / 70

Page 105: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Bernard échoue avant de se synchroniser

bernard@pcbernard :~/ demo$ git push origin master

To souris@distant :~/ demo.git! [ rejected ] master -> master ( fetch first )

error : failed to push some refs to ’souris@distant :~/ demo.git ’

hint: Updates were rejected because the remote contains workthat you do

hint: not have locally . This is usually caused by anotherrepository pushing

hint: to the same ref. You may want to first integrate theremote changes

hint: (e.g., ’git pull ... ’) before pushing again .hint: See the ’Note about fast -forwards ’ in ’git push --help

’ for details .

56 / 70

Page 106: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Conflit et résolution

fichier.tex

Dépôtfichier.tex

Dépôt de Bernard

fichier.tex

Bernard

fichier.tex

Dépôt de Bianca

fichier.tex

Bianca

57 / 70

Page 107: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Conflit et résolution

fichier.tex

Dépôtfichier.tex

Dépôt de Bernard

fichier.tex

Bernard

commit

fichier.tex

Dépôt de Bianca

fichier.tex

Bianca

commit

57 / 70

Page 108: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Conflit et résolution

fichier.tex

Dépôtfichier.tex

Dépôt de Bernard

fichier.tex

Bernard

fichier.tex

Dépôt de Bianca

fichier.tex

Bianca

push

57 / 70

Page 109: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Conflit et résolution

fichier.tex

Dépôtfichier.tex

Dépôt de Bernard

fichier.tex

Bernard

fichier.tex

Dépôt de Bianca

fichier.tex

Biancapush

57 / 70

Page 110: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Conflit et résolution

fichier.tex

Dépôtfichier.tex

Dépôt de Bernard

fichier.tex

Bernard

fichier.tex

Dépôt de Bianca

fichier.tex

Biancapull

Conflit !

57 / 70

Page 111: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Conflit et résolution

fichier.tex

Dépôtfichier.tex

Dépôt de Bernard

fichier.tex

Bernard

fichier.tex

Dépôt de Bianca

fichier.tex

Bianca

arbitrage/fusion effective

57 / 70

Page 112: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Conflit et résolution

fichier.tex

Dépôtfichier.tex

Dépôt de Bernard

fichier.tex

Bernard

fichier.tex

Dépôt de Bianca

fichier.tex

Bianca

commit

57 / 70

Page 113: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Conflit et résolution

fichier.tex

Dépôtfichier.tex

Dépôt de Bernard

fichier.tex

Bernard

fichier.tex

Dépôt de Bianca

fichier.tex

Bianca

commitcommit

push

57 / 70

Page 114: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Gestion des conflits entre Bernard et Bianca

bianca@pcbianca :~/ demo$ git pull

remote : Counting objects : 5, done.remote : Compressing objects : 100% (2/2) , done.remote : Total 3 ( delta 0) , reused 0 ( delta 0)Unpacking objects : 100% (3/3) , done.From p2chpd - visu7 .univ - lyon1 .fr:TEST/demo

4 ba89d5 ..94 ae224 master -> origin / masterAuto - merging fichier .texCONFLICT ( content ): Merge conflict in fichier .texAutomatic merge failed ; fix conflicts and then commit the

result .

58 / 70

Page 115: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Gestion des conflits entre Bernard et Bianca

bianca@pcbianca :~/ demo$ git pull

remote : Counting objects : 5, done.remote : Compressing objects : 100% (2/2) , done.remote : Total 3 ( delta 0) , reused 0 ( delta 0)Unpacking objects : 100% (3/3) , done.From p2chpd - visu7 .univ - lyon1 .fr:TEST/demo

4 ba89d5 ..94 ae224 master -> origin / masterAuto - merging fichier .texCONFLICT ( content ): Merge conflict in fichier .texAutomatic merge failed ; fix conflicts and then commit the

result .

58 / 70

Page 116: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Fusion manuelle

bianca@pcbianca :~/ demo$ vi fichier .tex

1 % commentaire de Bianca2 <<<<<<< HEAD3 % commentaire de Bianca4 =======5 % commentaire de Bernard au même endroit6 >>>>>>> 94 ae22421e3bf6d329bdf1e13bcbc77a850ed258

59 / 70

Page 117: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Fusion manuelle

bianca@pcbianca :~/ demo$ vi fichier .tex

1 % commentaire de Bianca2 <<<<<<< HEAD3 % commentaire de Bianca4 =======5 % commentaire de Bernard au même endroit6 >>>>>>> 94 ae22421e3bf6d329bdf1e13bcbc77a850ed258

59 / 70

Page 118: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Fusion avec un outil

bianca@pcbianca :~/ demo$ git mergetool fichier .texbianca@pcbianca :~/ demo$ git checkout --ours fichier .texbianca@pcbianca :~/ demo$ git checkout --theirs fichier .texbianca@pcbianca :~/ demo$ git commit -m " fusion avec theirs "

Normal merge conflict for ’fichier .tex ’:{ local }: modified file{ remote }: modified file

Hit return to start merge resolution tool ( vimdiff ):4 files to edit

60 / 70

Page 119: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Fusion avec un outil

bianca@pcbianca :~/ demo$ git mergetool fichier .texbianca@pcbianca :~/ demo$ git checkout --ours fichier .texbianca@pcbianca :~/ demo$ git checkout --theirs fichier .texbianca@pcbianca :~/ demo$ git commit -m " fusion avec theirs "

Normal merge conflict for ’fichier .tex ’:{ local }: modified file{ remote }: modified file

Hit return to start merge resolution tool ( vimdiff ):4 files to edit

60 / 70

Page 120: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Fusion en instance

bianca@pcbianca :~/ demo$ git status

On branch masterYour branch and ’origin /master ’ have diverged ,and have 1 and 1 different commit each , respectively .

(use "git pull" to merge the remote branch into yours )

All conflicts fixed but you are still merging .(use "git commit " to conclude merge )

Changes to be committed :

modified : fichier .tex

Untracked files :(use "git add <file >..." to include in what will be

committed )

fichier .tex.orig

61 / 70

Page 121: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Fusion en instance

bianca@pcbianca :~/ demo$ git status

On branch masterYour branch and ’origin /master ’ have diverged ,and have 1 and 1 different commit each , respectively .

(use "git pull" to merge the remote branch into yours )

All conflicts fixed but you are still merging .(use "git commit " to conclude merge )

Changes to be committed :

modified : fichier .tex

Untracked files :(use "git add <file >..." to include in what will be

committed )

fichier .tex.orig

61 / 70

Page 122: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Fusion effective

bianca@pcbianca :~/ demo$ git commit -m " fusion avec theirs "[ master c198c63 ] fusion avec theirsbianca@pcbianca :~/ demo$ git push origin master

Counting objects : 10, done.Delta compression using up to 4 threads .Compressing objects : 100% (2/2) , done.Writing objects : 100% (6/6) , 556 bytes | 0 bytes /s, done.Total 6 ( delta 0) , reused 0 ( delta 0)To souris@distant :~/ demo.git

94 ae224 .. c198c63 master -> master

bianca@pcbianca :~/ demo$ git pull origin master

From distant :~/ demo* branch master -> FETCH_HEAD

Already up -to -date.

... travail à faire par Bernard si Bianca continue ses modifications62 / 70

Page 123: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Fusion effective

bianca@pcbianca :~/ demo$ git commit -m " fusion avec theirs "[ master c198c63 ] fusion avec theirsbianca@pcbianca :~/ demo$ git push origin master

Counting objects : 10, done.Delta compression using up to 4 threads .Compressing objects : 100% (2/2) , done.Writing objects : 100% (6/6) , 556 bytes | 0 bytes /s, done.Total 6 ( delta 0) , reused 0 ( delta 0)To souris@distant :~/ demo.git

94 ae224 .. c198c63 master -> master

bianca@pcbianca :~/ demo$ git pull origin master

From distant :~/ demo* branch master -> FETCH_HEAD

Already up -to -date.

... travail à faire par Bernard si Bianca continue ses modifications62 / 70

Page 124: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Fusion effective

bianca@pcbianca :~/ demo$ git commit -m " fusion avec theirs "[ master c198c63 ] fusion avec theirsbianca@pcbianca :~/ demo$ git push origin master

Counting objects : 10, done.Delta compression using up to 4 threads .Compressing objects : 100% (2/2) , done.Writing objects : 100% (6/6) , 556 bytes | 0 bytes /s, done.Total 6 ( delta 0) , reused 0 ( delta 0)To souris@distant :~/ demo.git

94 ae224 .. c198c63 master -> master

bianca@pcbianca :~/ demo$ git pull origin master

From distant :~/ demo* branch master -> FETCH_HEAD

Already up -to -date.

... travail à faire par Bernard si Bianca continue ses modifications62 / 70

Page 125: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Bonne pratique : utiliser les branches

bernard@pcbernard :~$ git clone souris@distant :~/ demo.gitbernard@pcbernard :~$ git checkout -b bernardbranche

git branch -a* master

remotes / origin /HEAD -> origin / masterremotes / origin / master

bianca@pcbianca :~$ git clone souris@distant :~/ demo.gitbianca@pcbianca :~$ git checkout -b biancabranche

... et utiliser les différentes commandes

63 / 70

Page 126: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Bonne pratique : utiliser les branches

bernard@pcbernard :~$ git clone souris@distant :~/ demo.gitbernard@pcbernard :~$ git checkout -b bernardbranche

git branch -a* master

remotes / origin /HEAD -> origin / masterremotes / origin / master

bianca@pcbianca :~$ git clone souris@distant :~/ demo.gitbianca@pcbianca :~$ git checkout -b biancabranche

... et utiliser les différentes commandes

63 / 70

Page 127: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Table des matières

1 Contexte

2 Systèmes de gestion de versions

3 Git

4 Exemple local

5 Exemple collaboratif

6 Outils, forges, serveurs et services web

64 / 70

Page 128: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Outils, forges, serveurs et services web

Environnement de développement

• Éditeur de texte (vi, gedit, xemacs, nano, geany, ...)• IDE (Integrated Development Environment)• Service en ligne d’hébergement de projets (interne ou externe)

65 / 70

Page 129: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Atelier de génie logiciel• IDE

• Eclipse, NetBeans, ...• Visual Studio, ... (propriétaire)

Principe (d’après Wikipédia)- conception générale du projet, étapes ou phases de réalisation- composition et organisation de l’équipe projet- calendrier, charges de travail, moyens et budgets- conventions de nommage des données et des programmes- structuration des données- aide à l’édition de programmes dans différents langages- compilation- génération de code optimisé- édition de liens- aide aux tests et suivi des corrections- bibliothèques pouvant être réutilisées dans plusieurs projets- documentations- gestion des versions successives des programmes

66 / 70

Page 130: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Service en ligne d’hébergement de projets• Forge logicielle, gestion de projets de développement collaboratifs

• Redmine, Tuleap, Trac,• Gitlab, Github, Gogs, Coding,• FusionForge (reprise opensource de GForge, devenue propriétaire),• SourceForge, SourceSup, ...

Fonctions disponibles d’une forge (d’après Wikipédia)- système de gestion des versions (par exemple, via Git ou Mercurial)- gestionnaire de listes de discussion (et/ou de forums)- outil de suivi des bugs- gestionnaire de documentation (souvent sur le principe du wiki)- gestion des tâches

Services d’hébergement externeshttps :// sourceforge .nethttps :// www. github .com

ou interne (ex. Gitlab de votre labo, entité, établissement, ...)https :// gitlab . mecaflu .ec -lyon.frhttps :// forge . p2chpd .univ - lyon1 .fr

67 / 70

Page 131: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Quelques comparaisonsComparaison de services d’hébergement Git en version gratuite

Github Bitbucket GitLab

3 très gros projet(138+ millionsdépôts, 600employés)

3 Grandeinteropérabilitéavec d’autresoutils

7 dépôts publicsuniquement

7 pas d’instanceprivée

3 très gros projet3 Git & Mercurial3 intégration dans

les produitsAtlassian

7 5 utilisateursmax/dépôt

7 pas d’instanceprivée

3 projet pérenne etdynamique (132employés, 33pays)

3 pas de limitedans la versionhébergée

7 des lenteurs surle site gitlab.com

3 instance privéeopensource

3 outilsd’intégrationcontinue natifs

(de Matthieu Boileau, nov. 2016, d’après http://comparegithosting.com)68 / 70

Page 132: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Hébergement et interfaces

Github GitLab Gogs

3 Git, SVN, Hg,TFS

7 externe3 très large

communauté3 prise en main

intuitiveprog. en Ruby

7 Git3 interne/externe3 très utilisé3 prise en main

relativementrapideprog. en Ruby

3 extensions(ContinuousIntegration,Large FileStorage, ...)

7 Git7 interne (light)3 relativement

nouveau3 sur le modèle de

Githubprog. en Go

⇒ Combiner éventuellement suivant le mode de diffusion choisi69 / 70

Page 133: AnneCadiou - Claude Bernard University Lyon 1lyoncalcul.univ-lyon1.fr/ed/DOCS_2016-2017/cours_GIT.pdf · 2021. 1. 26. · Contexte Principe Git Exemple local Exemple collaboratif

Contexte Principe Git Exemple local Exemple collaboratif Outils, forges, serveurs et services web

Exploitation de Gitlab par l’utilisateur

Les fonctionnalités de GitLab

• Création rapide de projets avec gestion des droits (public, privé,...)• Groupes de projets• Historique des commits• Edition en ligne• Outils annexes :

- statistiques- wiki- gestionnaire de tickets- notifications par mail

• Intégration continue avec gitlab-ci

70 / 70