devops - gestionnaires de versions - thomas ropars...gestion des acc es concurrents gestion...
TRANSCRIPT
![Page 2: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/2.jpg)
Agenda
Introduction
GIT
Utilisation de Git
Les bonnes pratiques
Synchronisation avec des depots distants
2
![Page 3: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/3.jpg)
Agenda
Introduction
GIT
Utilisation de Git
Les bonnes pratiques
Synchronisation avec des depots distants
3
![Page 4: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/4.jpg)
Motivations
Une equipe de developpeurs participe a la realisation d’uneapplication:
• Comment conserver un historique?
• Comment revenir en arriere?
• Comment travailler a plusieurs en parallele sur le meme code?
• Comment gerer plusieurs versions du code a la fois?
• Comment savoir ce qui a ete modifie et par qui (et pourquoi)?
Utilisation d’un VCS (Version Control Software)
4
![Page 5: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/5.jpg)
Motivations
Une equipe de developpeurs participe a la realisation d’uneapplication:
• Comment conserver un historique?
• Comment revenir en arriere?
• Comment travailler a plusieurs en parallele sur le meme code?
• Comment gerer plusieurs versions du code a la fois?
• Comment savoir ce qui a ete modifie et par qui (et pourquoi)?
Utilisation d’un VCS (Version Control Software)
4
![Page 6: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/6.jpg)
Ce qu’on y stocke
Essentiellement des fichiers texte.
Ce qu’on y met
• Fichier sources (.java, .c, .html, etc)
• Certains fichiers binaires non derives des sources (images)
• Fichiers de configuration, compilation (Makefile)
Ce qu’on n’y met pas
• Fichiers temporaires
• Fichiers generes
5
![Page 7: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/7.jpg)
diff & patch
Un VCS repose sur un mecanisme permettant de calculer lesdifferences entre 2 versions d’un fichier.
diff• Comparaison de fichiers ligne par ligne
• Indique les lignes ajoutees ou supprimees
• Peut ignorer les casses, les tabulations, les espaces
patch
• Utilise la difference entre deux fichiers pour passer d’uneversion a l’autre
6
![Page 8: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/8.jpg)
diff & patch
Illustration• Sauvegarder dans un patch les modifications d’un fichier
$ diff toto.c toto-orig.c > correction.patch
• Appliquer le patch a une autre version du fichier$ patch -p 0 mytoto.c < correction.patch
diff et patch peuvent etre appliques a une arborescence defichiers
7
![Page 9: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/9.jpg)
La notion d’historique
En plus de calculer la difference entre deux versions d’un fichier, ilfaut gerer un historique des diffs:
• L’historique est un graphe oriente acyclique compose d’unensemble de versions pouvant etre recalculees a partir desversions adjacentes en appliquant les patchs modelises par lesarcs sortants
A B C
D E
8
![Page 10: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/10.jpg)
Historique: les branches
La branche de la version vi d’un historique est le sous-graphecompose de l’ensemble des versions accessibles depuis vi .
A B C
D E
9
![Page 11: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/11.jpg)
Historique: les branches
La branche de la version vi d’un historique est le sous-graphecompose de l’ensemble des versions accessibles depuis vi .
A B C
D E
9
![Page 12: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/12.jpg)
Historique: la branche principale
La branche principale de l’historique est la branche issue de laderniere version stable.
A B C
D E
10
![Page 13: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/13.jpg)
Historique: la branche principale
La branche principale de l’historique est la branche issue de laderniere version stable.
A B C
D E
10
![Page 14: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/14.jpg)
Historique: les merges
On appelle merge toute version ayant un degre sortant strictementsuperieur a 1. Cette version correspond alors a la fusion des patchsde plusieurs branches.
A B C D
E F
G H
11
![Page 15: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/15.jpg)
Historique: les merges
On appelle merge toute version ayant un degre sortant strictementsuperieur a 1. Cette version correspond alors a la fusion des patchsde plusieurs branches.
A B C D
E F
G H
11
![Page 16: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/16.jpg)
Gestion des acces concurrents
Gestion pessimiste
• Un seul contributeur a acces en ecriture a un fichier
• Pas de conflits
• Pas pratique
Gestion optimiste
• Chaque developpeur peut modifier sa copie locale en parallele• Risques de conflits
I Modifications concurrentes de la meme zone de texte
• Tous les VCS actuels ont une approche optimiste
12
![Page 17: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/17.jpg)
Modele centralise/distribue
Modele centralise• Un serveur gere l’integralite des version (le depot)
• Les utilisateurs y ajoutent leurs modifications
• Les utilisateurs y recuperent les modifications des autres
Modele distribue• Chaque utilisateur possede un depot entier
• Les depots peuvent s’echanger des modifications
13
![Page 18: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/18.jpg)
Modele centralise/distribue
Modele centralise• Un serveur gere l’integralite des version (le depot)
• Les utilisateurs y ajoutent leurs modifications
• Les utilisateurs y recuperent les modifications des autres
Modele distribue• Chaque utilisateur possede un depot entier
• Les depots peuvent s’echanger des modifications
13
![Page 19: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/19.jpg)
Agenda
Introduction
GIT
Utilisation de Git
Les bonnes pratiques
Synchronisation avec des depots distants
14
![Page 20: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/20.jpg)
Avant de commencer . . .
Warning
Remarque introductive, presentation de GIT @ Google par LinusTorvalds, 2007.
[Linus] is a guy who delights being cruel to people. Hislatest cruel act is to create a revision control system whichis expressly designed to make you feel less intelligent thanyou thought you were. [...] So Linus is here today toexplain to us why on earth he wrote a software tool which,eh, only he is smart enough to know how to use.
Il existe des dizaines de documentations/tutoriels disponibles enligne.
• La meilleure chose est d’apprendre par vous meme.
15
![Page 21: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/21.jpg)
Fonde sur une fonction de hachage
SHA-1• Secure Hash Algorithm (cryptographie)• Genere une empreinte des donnees d’entree
I Contenu du fichierI en-tete
• Proprietes:I Hash de 160 bitsI Tres faible probabilite de collision
• Identifie de maniere unique chaque objet
Exemple$ echo a > toto
$ sha1sum toto
3f786850e387550fdab836ed7e6dc881de23001b toto
$ echo b >> toto
05dec960e24d918b8a73a1c53bcbbaac2ee5c2e0 toto
16
![Page 22: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/22.jpg)
Les objets dans Git
• Blobs
• Tree
• Commit
• Tag
Content-adressable file system
• Chaque objet est accessible a partir de sa cle.
17
![Page 23: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/23.jpg)
Blob
DefinitionOn appelle Blob, l’element de base qui permet de stocker lecontenu d’un fichier.
• Chaque Blob est identifie de maniere unique par sa cle
• A chaque revision du fichier correspond un nouveau Blob• Le Blob ne depend pas du nom ou de l’emplacement :
I Si un fichier est renomme, pas de nouveau BlobI Si un fichier est deplace, pas de nouveau Blob
• Le contenu du Blob est compresse avec zlib. Il contient:I Le type d’objet (blob)I La taille du fichier initialI Le contenu du fichier
18
![Page 24: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/24.jpg)
Tree
DefinitionUn Tree stocke la liste des fichiers d’un repertoire.
• Un Tree est un ensemble de pointeurs vers des Blobs etd’autres Trees.
• Un Tree associe un nom de fichier (resp. repertoire) a chacundes pointeurs de Blobs (resp. Trees).
• Un ensemble de Trees permet de decrire l’etat d’unehierarchie de dossiers a un moment donne.
19
![Page 25: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/25.jpg)
Tree et Blob: Exemple
abcd 1234
tree
tree
zzzz
c09a. . . f371. . .
654b. . .
a00a. . .
cd82. . .
file1.txt bla.txt
otherDir
z.txt
20
![Page 26: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/26.jpg)
Tree et Blob: Exemple
abcd 1234
tree
tree
zzzz
c09a. . . f371. . .
654b. . .
a00a. . .
cd82. . .
file1.txt bla.txt
otherDir
z.txt
20
![Page 27: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/27.jpg)
Tree et Blob: Exemple
abcd 1234
tree
tree
zzzz
c09a. . . f371. . .
654b. . .
a00a. . .
cd82. . .
file1.txt bla.txt
otherDir
z.txt
20
![Page 28: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/28.jpg)
Commit
DefinitionUn Commit stocke l’etat d’une partie du depot a un instant donne.Il contient :
• Un pointeur vers un Tree (arbre racine) dont on souhaitesauver l’etat.
• Un pointeur vers un ou plusieurs autres Commits pourconstituer un historique.
• Les informations sur l’auteur du Commit.
• Une description sous forme d’une chaıne de caracteres.
21
![Page 29: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/29.jpg)
Exemple avec Commit
abcd 1234
tree
tree
zzzz
commit 1
c09a. . . f371. . .
654b. . .
a00a. . .
cd82. . .
89ad. . .
file1.txt bla.txt
otherDir
z.txt
22
![Page 30: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/30.jpg)
Exemple avec Commit: modification de file1.txt
abcd 1234ABcd
tree
tree
zzzz
commit 1treecommit 2
c09a. . . f371. . .
654b. . .
a00a. . .
cd82. . .
89ad. . .
3321. . .
d42f. . .b557. . .
file1.txt b
la.txt
otherDir
z.txt
file1.txt bla.txt
otherDir
23
![Page 31: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/31.jpg)
Exemple avec Commit: modification de file1.txt
abcd 1234ABcd
tree
tree
zzzz
commit 1treecommit 2
c09a. . . f371. . .
654b. . .
a00a. . .
cd82. . .
89ad. . .
3321. . .
d42f. . .b557. . .
file1.txt b
la.txt
otherDir
z.txt
file1.txt bla.txt
otherDir
23
![Page 32: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/32.jpg)
Exemple avec Commit: modification de file1.txt
abcd 1234ABcd
tree
tree
zzzz
commit 1treecommit 2
c09a. . . f371. . .
654b. . .
a00a. . .
cd82. . .
89ad. . .
3321. . .
d42f. . .b557. . .
file1.txt b
la.txt
otherDir
z.txt
file1.txt bla.txt
otherDir
23
![Page 33: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/33.jpg)
Les Tags
DefinitionUn Tag permet d’identifier un des objets precedents a l’aide d’unnom.
• Il contient un pointeur vers un Blob, un Tree ou un Commit.
24
![Page 34: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/34.jpg)
Agenda
Introduction
GIT
Utilisation de Git
Les bonnes pratiques
Synchronisation avec des depots distants
25
![Page 35: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/35.jpg)
Les commandes
Git est un ensemble de commandes. Les commandes sont de laforme:
git commande options
Exemple
git add file1.txt
26
![Page 36: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/36.jpg)
Creation d’un depot
Creation d’un depot serveur
$ mkdir projet.git
$ cd projet.git
$ git --bare init
• Pas de repertoire xxx/.git mais directement un xxx.git/
• Ne contient pas les fichiers versionnes mais juste l’historique
• A cloner pour travailler dessus
27
![Page 37: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/37.jpg)
Creation d’un depot
Initialisation d’un depot
$ cd myproject
$ git init
$ git add .
$ git commit -m ’initial commit’
$ git remote add origin git@gitserver:/XX/XX/project.git
$ git push origin master
• Creer un repertoire local myproject pour stocker notreversion du projet.
• Associer le depot local avec le depot distant
• Envoyer l’etat initial du depot vers le serveur
• A partir de ce moment, tout le monde peut obtenir sa copielocale du depot en utilisant git clone
28
![Page 38: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/38.jpg)
Cloner un depot existant
Tres souvent, un depot existe deja. On veut alors recuperer unecopie de ce depot.
Cloner un depot
$ git clone URL
• Cree une copie locale du depot entier.• L’URL peut etre de la forme:
I file://./myproject/project.gitI http://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-
2.6.gitI git://github.com/schacon/grit.git
29
![Page 39: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/39.jpg)
Le cycle de vie d’un fichier
Non versionneIndexe
(Staged)Modifie A jour
Versionne
git add <file> git add <file> edit <file>
git commit <file>
git reset HEAD git checkout
30
![Page 40: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/40.jpg)
Le cycle de vie d’un fichier
Non versionneIndexe
(Staged)Modifie A jour
Versionne
git add <file> git add <file> edit <file>
git commit <file>
git reset HEAD git checkout
30
![Page 41: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/41.jpg)
Le cycle de vie d’un fichier
Non versionneIndexe
(Staged)Modifie A jour
Versionne
git add <file> git add <file> edit <file>
git commit <file>
git reset HEAD git checkout
30
![Page 42: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/42.jpg)
Le cycle de vie d’un fichier
Non versionneIndexe
(Staged)Modifie A jour
Versionne
git add <file> git add <file> edit <file>
git commit <file>
git reset HEAD git checkout
30
![Page 43: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/43.jpg)
Le cycle de vie d’un fichier
Non versionneIndexe
(Staged)Modifie A jour
Versionne
git add <file> git add <file> edit <file>
git commit <file>
git reset HEAD git checkout
30
![Page 44: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/44.jpg)
Le cycle de vie d’un fichier
Non versionneIndexe
(Staged)Modifie A jour
Versionne
git add <file> git add <file> edit <file>
git commit <file>
git reset HEAD git checkout
30
![Page 45: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/45.jpg)
Quelques commandes
add : Ajoute dans l’index un fichier a commiter dans sonetat actuel.
commit : enregistre dans le depot local les modifications quiont ete ajoutees dans l’index par une commande add
reset HEAD : supprime la reference d’un fichier de l’index ajoutepar une commande add.
L’index est aussi appele staging area.
Souvent on veut simplement commiter toutes les modifications encours (= fichiers de l’index + fichiers modifies):
$ git commit -a
31
![Page 46: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/46.jpg)
Exemple de commit
Commit
$ echo "coucou" >hello.txt
$ git add hello.txt
$ git commit -m "description du commit"
En l’absence de message decrivant le commit, un fichier decrivantle commit est ouvert, vous invitant a completer la description.
Selectionnez votre editeur favori
$ git config --global core.editor "emacs"
32
![Page 47: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/47.jpg)
Etat courant de votre repertoire de travail
$ git status
• Permet de connaıtre l’etat courant de l’index
I Les modifications indexeesI Les modifications non indexeesI Les fichiers non versionnes
• Git vous indique meme comment effectuer les actions principales
I CommiterI Ajouter des fichiers a l’indexI Annuler des modifications
33
![Page 48: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/48.jpg)
Les branches
Rappel
La branche de la version vi d’un historique est le sous-graphecompose de l’ensemble des versions accessibles depuis vi .
Dans Git• Une branche est un pointeur sur un commit
• Chaque commit pointe vers son predecesseur
• La variable HEAD pointe sur la branche sur laquelle ontravaille actuellement.
34
![Page 49: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/49.jpg)
Branche : les commandes.
branch : liste les branches avec une * pour la branche active.branch <nom> : crée une nouvelle branche <nom>.branch -m : permet de renommer une branche.branch -d : permet de supprimer une branche.checkout : change (ou/et crée) de branche active.
show-branch : affiche les branches et leurs commits.
Exemple
$ git branch* master
$ git branch maBranche$ git branch
maBranche* master
$ git checkout maBranche$ git branch
* maBranchemaster
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 45 / 87
![Page 50: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/50.jpg)
Les merges
$ git checkout brancheDestination
$ git merge brangeSource
• Cree un commit qui a pour parent les deux branches
• La branche courante avance a ce commit
• La source ne bouge pas, mais devient un fils du nouveau commit
35
![Page 51: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/51.jpg)
Branche : structure interne des commits.
lsfoo.txt dir
git branch maBranche
git checkout maBranche
touch fichier1.txtlsdir fichier1.txt foo.txt
git add fichier1.txtgit commit -m "Add fichier1.txt"
git checkout masterlsdir foo.txt
touch fichier2.txtgit add fichier2.txtgit commit -m "Add fichier2.txt"
45463
7126f
a4407
15e12
4a439
15e12
4a439
25b06
57669
master
head
maBranche
headmaBranche
headmaBranche
head
master
head
maBranchemaster
head headmaBranche
headmaster
head
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 46 / 87
![Page 52: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/52.jpg)
Branche : structure interne des commits.
lsfoo.txt dir
git branch maBranche
git checkout maBranche
touch fichier1.txtlsdir fichier1.txt foo.txt
git add fichier1.txtgit commit -m "Add fichier1.txt"
git checkout masterlsdir foo.txt
touch fichier2.txtgit add fichier2.txtgit commit -m "Add fichier2.txt"
45463
7126f
a4407
15e12
4a439
15e12
4a439
25b06
57669
master
head
maBranche
headmaBranche
headmaBranche
head
master
head
maBranchemaster
head headmaBranche
headmaster
head
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 46 / 87
![Page 53: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/53.jpg)
Branche : structure interne des commits.
lsfoo.txt dir
git branch maBranche
git checkout maBranche
touch fichier1.txtlsdir fichier1.txt foo.txt
git add fichier1.txtgit commit -m "Add fichier1.txt"
git checkout masterlsdir foo.txt
touch fichier2.txtgit add fichier2.txtgit commit -m "Add fichier2.txt"
45463
7126f
a4407
15e12
4a439
15e12
4a439
25b06
57669
master
head
maBranche
head
maBranche
headmaBranche
head
master
head
maBranchemaster
head headmaBranche
headmaster
head
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 46 / 87
![Page 54: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/54.jpg)
Branche : structure interne des commits.
lsfoo.txt dir
git branch maBranche
git checkout maBranche
touch fichier1.txtlsdir fichier1.txt foo.txt
git add fichier1.txtgit commit -m "Add fichier1.txt"
git checkout masterlsdir foo.txt
touch fichier2.txtgit add fichier2.txtgit commit -m "Add fichier2.txt"
45463
7126f
a4407
15e12
4a439
15e12
4a439
25b06
57669
master
head
maBranche
head
maBranche
head
maBranche
head
master
head
maBranchemaster
head headmaBranche
headmaster
head
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 46 / 87
![Page 55: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/55.jpg)
Branche : structure interne des commits.
lsfoo.txt dir
git branch maBranche
git checkout maBranche
touch fichier1.txtlsdir fichier1.txt foo.txt
git add fichier1.txtgit commit -m "Add fichier1.txt"
git checkout masterlsdir foo.txt
touch fichier2.txtgit add fichier2.txtgit commit -m "Add fichier2.txt"
45463
7126f
a4407
15e12
4a439
15e12
4a439
25b06
57669
master
head
maBranche
head
maBranche
headmaBranche
head
master
head
maBranchemaster
head headmaBranche
headmaster
head
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 46 / 87
![Page 56: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/56.jpg)
Branche : structure interne des commits.
lsfoo.txt dir
git branch maBranche
git checkout maBranche
touch fichier1.txtlsdir fichier1.txt foo.txt
git add fichier1.txtgit commit -m "Add fichier1.txt"
git checkout masterlsdir foo.txt
touch fichier2.txtgit add fichier2.txtgit commit -m "Add fichier2.txt"
45463
7126f
a4407
15e12
4a439
15e12
4a439
25b06
57669
master
head
maBranche
headmaBranche
headmaBranche
head
master
head
maBranchemaster
head
headmaBranche
headmaster
head
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 46 / 87
![Page 57: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/57.jpg)
Merge : exemple sur deux branches distinctes.
lsdir fichier2.txt foo.txt
git checkout maBranchelsdir fichier1.txt foo.txt
echo "titi" > fichier1.txtgit commit -am "Modiffichier1.txt"
git checkout mastergit merge maBranchelsdir fichier1.txt fichier2.txt
foo.txt
git branch -d maBranche
45463
7126f
a4407
15e12
4a439
15e12
4a439
25b06
57669
master
head
maBranche
headmaBranche
headmaBranche
head
master
head
maBranchemaster
head
head
maBranche
headmaster
head
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 49 / 87
![Page 58: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/58.jpg)
Merge : exemple sur deux branches distinctes.
lsdir fichier2.txt foo.txt
git checkout maBranchelsdir fichier1.txt foo.txt
echo "titi" > fichier1.txtgit commit -am "Modiffichier1.txt"
git checkout master
git merge maBranchelsdir fichier1.txt fichier2.txt
foo.txt
git branch -d maBranche
45463
7126f
a4407
15e12
4a439
15e12
4a439
25b06
57669
master
head
maBranche
headmaBranche
headmaBranche
head
master
head
maBranche
master
head
head
maBranche
headmaster
head
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 49 / 87
![Page 59: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/59.jpg)
Merge : exemple sur deux branches distinctes.
lsdir fichier2.txt foo.txt
git checkout maBranchelsdir fichier1.txt foo.txt
echo "titi" > fichier1.txtgit commit -am "Modiffichier1.txt"
git checkout mastergit merge maBranchelsdir fichier1.txt fichier2.txt
foo.txt
git branch -d maBranche
45463
7126f
a4407
15e12
4a439
15e12
4a439
25b06
57669
master
head
maBranche
headmaBranche
headmaBranche
head
master
head
maBranchemaster
head head
maBranche
head
master
head
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 49 / 87
![Page 60: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/60.jpg)
Merge : exemple sur deux branches distinctes.
lsdir fichier2.txt foo.txt
git checkout maBranchelsdir fichier1.txt foo.txt
echo "titi" > fichier1.txtgit commit -am "Modiffichier1.txt"
git checkout mastergit merge maBranchelsdir fichier1.txt fichier2.txt
foo.txt
git branch -d maBranche
45463
7126f
a4407
15e12
4a439
15e12
4a439
25b06
57669
master
head
maBranche
headmaBranche
headmaBranche
head
master
head
maBranchemaster
head headmaBranche
head
master
head
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 49 / 87
![Page 61: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/61.jpg)
Identifier des commits
• Le dernier commit de la branche courante ou d’une autreI HEADI maBranche
• L’avant dernier et les precedentsI HEADˆ, mabrancheˆˆ, . . .I HEAD∼3, mabranche∼12, . . .
• D’autres manieresI HEAD@yesterdayI [email protected]
36
![Page 62: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/62.jpg)
Rebase
• Autre maniere de fusionner 2 branches
• Fusionne entierement la branche source dans la branchedestination
• Permet de simplifier l’historique
• Ne jamais rebaser des commits qui ont deja ete poussessur un depot public
37
![Page 63: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/63.jpg)
Rebase vs Merge.
Commit 1
Commit 2
Commit 3
Commit 5
Commit 7
Commit 4
Commit 6
≈ Commit 3
≈ Commit 5
master maBranche
head
maBranche
headmaBranche
head
Commit 1
Commit 2
Commit 3
Commit 5
Commit 7
Commit 4
Commit 6
≈ Commit 3
≈ Commit 5
master maBranche
head
maBranche
headmaBranche
head
git checkout maBranchegit merge master
git checkout maBranchegit rebase master
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 51 / 87
![Page 64: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/64.jpg)
Rebase vs Merge.
Commit 1
Commit 2
Commit 3
Commit 5
Commit 7
Commit 4
Commit 6
≈ Commit 3
≈ Commit 5
master
maBranche
head
maBranche
head
maBranche
head
Commit 1
Commit 2
Commit 3
Commit 5
Commit 7
Commit 4
Commit 6
≈ Commit 3
≈ Commit 5
master
maBranche
headmaBranche
head
maBranche
head
git checkout maBranchegit merge master
git checkout maBranchegit rebase master
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 51 / 87
![Page 65: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/65.jpg)
Revenir en arriere
Cas de modifications non commitees• Restaurer mon fichier dans la derniere version de l’index:
git checkout -- monfichier
I Utilisation de “--”: specifie que monfichier designe unfichier et pas une branche.
• Restaurer mon fichier dans la derniere version commitee:
git checkout HEAD monfichier
• Restaure tous les fichiers du repertoire courant:
git checkout .
Regarder aussi la nouvelle commande recement ajoutee: git
restore.
38
![Page 66: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/66.jpg)
Revenir en arriere
Cas de modifications commiteesTrois commandes disponibles:
amend : modifier le dernier commit
• Ajoute des fichiers au commit• Changer le message de commit
revert : annuler un commit par un autre commit
reset : retablir la situation d’un ancien commit
Si l’erreur a ete rendue publique, la seule bonne pratique estrevert.
39
![Page 67: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/67.jpg)
Amend : modification du dernier commit.
lsfoo.txt dir
touch bar.txtgit commit -m "Ajou d’un fichier."
git add bar.txt
git commit --amend -m "Ajout d’unfichier."
45463
7126f
a4407
15e12
4a439 4a43925b06
master
head
master
head
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 55 / 87
![Page 68: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/68.jpg)
Amend : modification du dernier commit.
lsfoo.txt dir
touch bar.txtgit commit -m "Ajou d’un fichier."
git add bar.txt
git commit --amend -m "Ajout d’unfichier."
45463
7126f
a4407
15e12
4a439
4a43925b06
master
head
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 55 / 87
![Page 69: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/69.jpg)
Amend : modification du dernier commit.
lsfoo.txt dir
touch bar.txtgit commit -m "Ajou d’un fichier."
git add bar.txt
git commit --amend -m "Ajout d’unfichier."
45463
7126f
a4407
15e12
4a439 4a43925b06master
head
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 55 / 87
![Page 70: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/70.jpg)
Git revert : annulation par commit.
git branch mastercat fichier1.txtPremiere version de F1
cat fichier2.txtPremiere version de F2
echo "Deuxieme version de F1" > fichier1.txtgit add fichier1.txtgit commit -m "Add fichier1.txt"
echo "Deuxieme version de F2" > fichier2.txtgit add fichier2.txtgit commit -m "Add fichier2.txt"
git revert HEADˆcat fichier1.txtPremiere version de F1
cat fichier2.txtDeuxieme version de F2
Commit 1
Commit 2
Commit 3
Commit 4
Commit 5
Commit 4
master
head
master
headmaster
headmaster
head
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 56 / 87
![Page 71: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/71.jpg)
Git revert : annulation par commit.
git branch mastercat fichier1.txtPremiere version de F1
cat fichier2.txtPremiere version de F2
echo "Deuxieme version de F1" > fichier1.txtgit add fichier1.txtgit commit -m "Add fichier1.txt"
echo "Deuxieme version de F2" > fichier2.txtgit add fichier2.txtgit commit -m "Add fichier2.txt"
git revert HEADˆcat fichier1.txtPremiere version de F1
cat fichier2.txtDeuxieme version de F2
Commit 1
Commit 2
Commit 3
Commit 4
Commit 5
Commit 4
master
headmaster
head
master
head
master
head
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 56 / 87
![Page 72: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/72.jpg)
Git revert : annulation par commit.
git branch mastercat fichier1.txtPremiere version de F1
cat fichier2.txtPremiere version de F2
echo "Deuxieme version de F1" > fichier1.txtgit add fichier1.txtgit commit -m "Add fichier1.txt"
echo "Deuxieme version de F2" > fichier2.txtgit add fichier2.txtgit commit -m "Add fichier2.txt"
git revert HEADˆcat fichier1.txtPremiere version de F1
cat fichier2.txtDeuxieme version de F2
Commit 1
Commit 2
Commit 3
Commit 4
Commit 5
Commit 4
master
headmaster
headmaster
head
master
head
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 56 / 87
![Page 73: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/73.jpg)
La commande reset
• Annuler des ajouts dans l’index
git reset monfichier
• Restaurer un ancien commit (mais en conservant toutes lesmodifications des fichiers et l’index)
git reset --soft commitID
• Restaurer un ancien commit et l’index (mais en conservant toutesles modifications des fichiers)
git reset commitID
• Restaurer un ancien commit, l’index, et le contenu des fichierscorrespondants
git reset --hard commitID
40
![Page 74: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/74.jpg)
Les différents type de reset.
Commit4546...
Commit7126...
Commita440...
Tree6994...
CommitnotVisible1...
Treebc45...
dir
Blob4f55...
bar.txt v2
Tree676e...
Tree9a99...
dir
Blob8983...
bar.txt
Tree4ab5...
Blob7a35...
foo.txt
master
head
master
head
Index
Commit4546...
Commit7126...
Commita440...
Tree6994...
CommitnotVisible1...
Treebc45...
dir
Blob4f55...
bar.txt v2
Tree676e...
Tree9a99...
dir
Blob8983...
bar.txt
Tree4ab5...
Blob7a35...
foo.txt
master
head
master
head
Index
Commit4546...
Commit7126...
Commita440...
Tree6994...
CommitnotVisible1...
Treebc45...
dir
Blob4f55...
bar.txt v2
Tree676e...
Tree9a99...
dir
Blob8983...
bar.txt
Tree4ab5...
Blob7a35...
foo.txt
master
head
master
head
Index
ls -R.: foo.txtdir: bar.txt
git reset --hard 4546ls -R.: foo.txt
ls -R.: foo.txtdir: bar.txt
git reset 4546ls -R.: foo.txtdir: bar.txt
ls -R.: foo.txtdir: bar.txt
git reset --soft 4546ls -R.: foo.txtdir: bar.txt
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 58 / 87
![Page 75: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/75.jpg)
Les différents type de reset.
Commit4546...
CommitnotVisible2...
Commit7126...
Commita440...
Tree6994...
CommitnotVisible1...
Treebc45...
dir
Blob4f55...
Tree676e...
Tree9a99...
dir
Blob8983...
CommitnotVisible3...
Tree4ab5...
Blob7a35...
foo.txt
master
head
master
head
Index
Commit4546...
Commit7126...
Commita440...
Tree6994...
CommitnotVisible1...
Treebc45...
dir
Blob4f55...
bar.txt v2
Tree676e...
Tree9a99...
dir
Blob8983...
bar.txt
Tree4ab5...
Blob7a35...
foo.txt
master
head
master
head
Index
Commit4546...
Commit7126...
Commita440...
Tree6994...
CommitnotVisible1...
Treebc45...
dir
Blob4f55...
bar.txt v2
Tree676e...
Tree9a99...
dir
Blob8983...
bar.txt
Tree4ab5...
Blob7a35...
foo.txt
master
head
master
head
Index
ls -R.: foo.txtdir: bar.txt
git reset --hard 4546ls -R.: foo.txt
ls -R.: foo.txtdir: bar.txt
git reset 4546ls -R.: foo.txtdir: bar.txt
ls -R.: foo.txtdir: bar.txt
git reset --soft 4546ls -R.: foo.txtdir: bar.txt
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 58 / 87
![Page 76: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/76.jpg)
Les différents type de reset.
Commit4546...
CommitnotVisible2...
Commit7126...
Commita440...
Tree6994...
CommitnotVisible1...
Treebc45...
dir
Blob4f55...
Tree676e...
Tree9a99...
dir
Blob8983...
CommitnotVisible3...
Tree4ab5...
Blob7a35...
foo.txt
master
head
master
head
Index
Commit4546...
CommitnotVisible2...
Commit7126...
Commita440...
Tree6994...
CommitnotVisible1...
Treebc45...
dir
Blob4f55...
Tree676e...
Tree9a99...
dir
Blob8983...
CommitnotVisible3...
Tree4ab5...
Blob7a35...
foo.txt
master
head
master
head
Index
Commit4546...
Commit7126...
Commita440...
Tree6994...
CommitnotVisible1...
Treebc45...
dir
Blob4f55...
bar.txt v2
Tree676e...
Tree9a99...
dir
Blob8983...
bar.txt
Tree4ab5...
Blob7a35...
foo.txt
master
head
master
head
Index
ls -R.: foo.txtdir: bar.txt
git reset --hard 4546ls -R.: foo.txt
ls -R.: foo.txtdir: bar.txt
git reset 4546ls -R.: foo.txtdir: bar.txt
ls -R.: foo.txtdir: bar.txt
git reset --soft 4546ls -R.: foo.txtdir: bar.txt
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 58 / 87
![Page 77: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/77.jpg)
Les différents type de reset.
Commit4546...
CommitnotVisible2...
Commit7126...
Commita440...
Tree6994...
CommitnotVisible1...
Treebc45...
dir
Blob4f55...
Tree676e...
Tree9a99...
dir
Blob8983...
CommitnotVisible3...
Tree4ab5...
Blob7a35...
foo.txt
master
head
master
head
Index
Commit4546...
CommitnotVisible2...
Commit7126...
Commita440...
Tree6994...
CommitnotVisible1...
Treebc45...
dir
Blob4f55...
Tree676e...
Tree9a99...
dir
Blob8983...
CommitnotVisible3...
Tree4ab5...
Blob7a35...
foo.txt
master
head
master
head
Index
Commit4546...
Commit7126...
Commita440...
Tree6994...
CommitnotVisible1...
Treebc45...
dir
Blob4f55...
bar.txt v2
Tree676e...
Tree9a99...
dir
Blob8983...
Tree4ab5...
Blob7a35...
foo.txt
master
head
master
head
Index
ls -R.: foo.txtdir: bar.txt
git reset --hard 4546ls -R.: foo.txt
ls -R.: foo.txtdir: bar.txt
git reset 4546ls -R.: foo.txtdir: bar.txt
ls -R.: foo.txtdir: bar.txt
git reset --soft 4546ls -R.: foo.txtdir: bar.txt
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 58 / 87
![Page 78: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/78.jpg)
Consulter l’historique des commits
Affiche l’historique des commits en remontant a partir decommitID.
git log commitID
• Par defaut, commitID est HEAD
De multiples possibilites. On peut voir:
• le log entre 2 versions
• le log d’un fichier
• le log sur une duree
• . . .
41
![Page 79: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/79.jpg)
Consulter des changements
Afficher les details sur un commit:
git show commitID
git show commitID -- monfichier monrepertoire
Afficher les differences entre des versions:
git diff commitID1..commitID2 -- monfichier monrepertoire
Savoir qui a modifie un fichier (voir une ligne):
git blame file.txt
git blame L80,+20 file.txt
42
![Page 80: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/80.jpg)
Agenda
Introduction
GIT
Utilisation de Git
Les bonnes pratiques
Synchronisation avec des depots distants
43
![Page 81: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/81.jpg)
Configurer git
• Commencer par renseigner son nom et email
$ git config --global user.name "Thomas Ropars"
$ git config --global user.email [email protected]
44
![Page 82: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/82.jpg)
Modifications d’un historique public
Regle generale
Ne jamais reecrire un historique publiquement accessible
• Attention a l’utilisation des commandes rebase et reset
• Ne pas utiliser push --force a moins de vraiment savoir ceque vous faıtes
• Nettoyer son historique avant de le pousser si confus
45
![Page 83: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/83.jpg)
Ignorer des fichiers: gitignore
gitignore specifie les fichiers non versionnes que git doit ignorer:
• Les fichiers deja versionnes ne sont pas affectes.
• Definition a l’aide de patterns
Les fichiers gitignore:• Des fichiers .gitignore peuvent etre places n’importe ou dans
la hierarchie.I Les regles des fichiers plus bas dans la hierarchie se substituent
aux regles definies plus haut.• Priorites: Meme repertoire, parent, . . . , racine du depot
I Ces fichiers .gitignore sont a ajouter au depot
• $GIT DIR/info/excludeI Regles specifiques a un utilisateur
• Fichier specifie par l’option de configuration core.excludesFiledans (homedir)/.gitconfig
46
![Page 84: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/84.jpg)
Ignorer des fichiers: gitignore
Definir des regles
# a comment - this is ignored
# no .a files
*.a
# but do track lib.a, even though you’re ignoring .a files above
!lib.a
# only ignore the root TODO file, not subdir/TODO
/TODO
# ignore all files in the build/ directory
build/
# ignore doc/notes.txt, but not doc/server/arch.txt
doc/*.txt
47
![Page 85: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/85.jpg)
Messages de commit
Le plus important
Decrire quoi et pourquoi et pas comment
• Ne pas decrire les modifications qui sont faites (informationsdisponibles avec un diff)
• Decrire les fonctionnalites ajoutees
Exemple
• Bad: Modifie la fonction f pour tester la variable a
• Good: Verifie les droits de l’utilisateur avant d’executerl’action X
48
![Page 86: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/86.jpg)
Messages de commit
Bonnes pratiques pour le format des messages
• Separer le sujet du corps du message par une ligne videI Adapte a l’affichage des logs (git log --oneline; git
shortlog)
• Utiliser 50 caracteres max pour le sujetI Pas une limite reelleI Bon conseil a suivre pour conserver une historique lisible
• Commencer le sujet par une majuscule et ne pas terminer parun point
• Formuler les messages au present
49
![Page 87: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/87.jpg)
Interface graphique
Quelque soit votre environnement de travail, il existe des interfacesgraphiques pour gerer vos projets:
• Avec git:I gitk: Visualisation de l’historiqueI git-gui: Interface pour la creation de commits
• Linux: gitg, giggle, . . .
• Windows, Mac: look herehttps://git-scm.com/download/guis
• Eclipse: EGit, . . .
50
![Page 88: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/88.jpg)
Agenda
Introduction
GIT
Utilisation de Git
Les bonnes pratiques
Synchronisation avec des depots distants
51
![Page 89: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/89.jpg)
Rappel
Modele centralise• Un serveur gere l’integralite des version (le depot)
• Les utilisateurs y ajoutent leurs modifications
• Les utilisateurs y recuperent les modifications des autres
Modele distribue• Chaque utilisateur possede un depot entier
• Les depots peuvent s’echanger des modifications
52
![Page 90: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/90.jpg)
Modele distribue
• Chaque client a l’ensemble des fichiers dans son depot localI Travailler off-lineI Changer de branche est rapide. On peut abuser des branches.
• Actions necessitant un acces au depot distantI Mise a jour du depot local depuis l’exterieurI L’envoi d’informations
• Le client peut versionner en local.
53
![Page 91: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/91.jpg)
Branches distantes et branches locales
Un projet décentralisé possède deux types de branches :
DéfinitionOn appelle branche distante, une branche qui pointe sur desdépôts distants en lecture et/ou écriture. Ces dépôts distantspeuvent être référencés par une ou plusieurs personnes.
DéfinitionOn appelle branche locale, une branche propre au dépôt local.Pour être envoyées, les données d’une telle branche doivent êtrefusionnées avec une branche distante.
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 70 / 87
![Page 92: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/92.jpg)
Fetch, Merge et Pull
fetch : Importe les commits d’un depot distant dans ledepot local.
• Utiliser merge pour importer les changementsdans une branche locale
pull : Fusionne les changements d’un depot distantdirectement dans une branche locale.
• Equivalent d’un fetch suivi d’un merge.• Peut etre configure pour utiliser rebase au lieu
de merge• Fetch permet d’observer les changements avant
de les integrer dans sa branche de travail
54
![Page 93: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/93.jpg)
Modele distribue
depot distant depot local
git merge
git commitgit push
git fetch
git pull
55
![Page 94: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/94.jpg)
Modele distribue
depot distant depot local
git merge
git commitgit push
git fetch
git pull
55
![Page 95: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/95.jpg)
Modele distribue
depot distant depot local
git merge
git commitgit push
git fetch
git pull
55
![Page 96: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/96.jpg)
Modele distribue
depot distant depot local
git merge
git commitgit push
git fetch
git pull
55
![Page 97: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/97.jpg)
Dépôts distants et gestion de la concurrence.
C1
C2C2
C3
C8C5
C4
C5
C6C7
orig
in/m
aste
r
mas
ter
foo
orig
in/fo
o
cont
rib/b
ar
C1
C2
C3C4
C5
C6C7
mas
ter
foo
C1
C2
C3
C8
C4C4
C5
C6C7C7
orig
in/m
aste
r
mas
ter
orig
in/fo
o
bar
git initgit add ...git commit
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 71 / 87
![Page 98: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/98.jpg)
Dépôts distants et gestion de la concurrence.
C1
C2C2
C3
C8C5
C4
C5
C6C7
orig
in/m
aste
r
mas
ter
foo
orig
in/fo
o
cont
rib/b
ar
C1
C2
C3C4
C5
C6C7
mas
ter
foo
C1
C2
C3
C8
C4C4
C5
C6C7C7
orig
in/m
aste
r
mas
ter
orig
in/fo
o
bar
git clone <@serveur>
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 71 / 87
![Page 99: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/99.jpg)
Dépôts distants et gestion de la concurrence.
C1
C2C2
C3
C8C5
C4
C5
C6C7
orig
in/m
aste
r
mas
ter
foo
orig
in/fo
o
cont
rib/b
ar
C1
C2
C3C4
C5
C6C7
mas
ter
foo
C1
C2
C3
C8
C4C4
C5
C6C7C7
orig
in/m
aste
r
mas
ter
orig
in/fo
o
bar
git clone <@serveur>
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 71 / 87
![Page 100: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/100.jpg)
Dépôts distants et gestion de la concurrence.
C1
C2
C2
C3
C8C5
C4
C5
C6C7
orig
in/m
aste
r
mas
ter
foo
orig
in/fo
o
cont
rib/b
ar
C1
C2
C3C4
C5
C6C7
mas
ter
foo
C1
C2
C3
C8
C4C4
C5
C6C7C7
orig
in/m
aste
r
mas
ter
orig
in/fo
o
bar
git commit
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 71 / 87
![Page 101: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/101.jpg)
Dépôts distants et gestion de la concurrence.
C1
C2
C2
C3
C8C5
C4
C5
C6C7
orig
in/m
aste
r
mas
ter
foo
orig
in/fo
o
cont
rib/b
ar
C1
C2
C3C4
C5
C6C7
mas
ter
foo
C1
C2
C3
C8
C4C4
C5
C6C7C7
orig
in/m
aste
r
mas
ter
orig
in/fo
o
bar
git push origin
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 71 / 87
![Page 102: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/102.jpg)
Dépôts distants et gestion de la concurrence.
C1
C2
C2
C3
C8C5
C4
C5
C6C7
orig
in/m
aste
r
mas
ter
foo
orig
in/fo
o
cont
rib/b
ar
C1
C2
C3C4
C5
C6C7
mas
ter
foo
C1
C2
C3
C8
C4C4
C5
C6C7C7
orig
in/m
aste
r
mas
ter
orig
in/fo
o
bar
git fetch origin
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 71 / 87
![Page 103: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/103.jpg)
Dépôts distants et gestion de la concurrence.
C1
C2
C2
C3
C8C5
C4
C5
C6C7
orig
in/m
aste
r
mas
ter
foo
orig
in/fo
o
cont
rib/b
ar
C1
C2
C3C4
C5
C6C7
mas
ter
foo
C1
C2
C3
C8
C4C4
C5
C6C7C7
orig
in/m
aste
r
mas
ter
orig
in/fo
o
bar
git merge
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 71 / 87
![Page 104: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/104.jpg)
Dépôts distants et gestion de la concurrence.
C1
C2
C2
C3
C8C5
C4
C5
C6C7
orig
in/m
aste
r
mas
ter
foo
orig
in/fo
o
cont
rib/b
ar
C1
C2
C3C4
C5
C6C7
mas
ter
foo
C1
C2
C3
C8
C4C4
C5
C6C7C7
orig
in/m
aste
r
mas
ter
orig
in/fo
o
bar
git commit
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 71 / 87
![Page 105: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/105.jpg)
Dépôts distants et gestion de la concurrence.
C1
C2
C2
C3
C8C5
C4
C5
C6C7
orig
in/m
aste
r
mas
ter
foo
orig
in/fo
o
cont
rib/b
ar
C1
C2
C3C4
C5
C6C7
mas
ter
foo
C1
C2
C3
C8
C4
C4
C5
C6C7C7
orig
in/m
aste
r
mas
ter
orig
in/fo
o
bar
git commit
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 71 / 87
![Page 106: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/106.jpg)
Dépôts distants et gestion de la concurrence.
C1
C2
C2
C3
C8C5
C4
C5
C6C7
orig
in/m
aste
r
mas
ter
foo
orig
in/fo
o
cont
rib/b
ar
C1
C2
C3
C4
C5
C6C7
mas
ter
foo
C1
C2
C3
C8
C4
C4
C5
C6C7C7
orig
in/m
aste
r
mas
ter
orig
in/fo
o
bar
git push origin
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 71 / 87
![Page 107: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/107.jpg)
Dépôts distants et gestion de la concurrence.
C1
C2
C2
C3
C8C5
C4
C5
C6C7
orig
in/m
aste
r
mas
ter
foo
orig
in/fo
o
cont
rib/b
ar
C1
C2
C3
C4
C5
C6C7
mas
ter
foo
C1
C2
C3
C8
C4
C4
C5
C6C7C7
orig
in/m
aste
r
mas
ter
orig
in/fo
o
bar
git fetch origin
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 71 / 87
![Page 108: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/108.jpg)
Dépôts distants et gestion de la concurrence.
C1
C2
C2
C3
C8
C5
C4
C5
C6C7
orig
in/m
aste
r
mas
ter
foo
orig
in/fo
o
cont
rib/b
ar
C1
C2
C3
C4
C5
C6C7
mas
ter
foo
C1
C2
C3
C8
C4
C4
C5
C6C7C7
orig
in/m
aste
r
mas
ter
orig
in/fo
o
bar
git merge origin
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 71 / 87
![Page 109: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/109.jpg)
Dépôts distants et gestion de la concurrence.
C1
C2
C2
C3
C8C5
C4
C5
C6C7
orig
in/m
aste
r
mas
ter
foo
orig
in/fo
o
cont
rib/b
ar
C1
C2
C3C4
C5
C6C7
mas
ter
foo
C1
C2
C3
C8
C4
C4
C5
C6C7C7
orig
in/m
aste
r
mas
ter
orig
in/fo
o
bar
git push origin
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 71 / 87
![Page 110: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/110.jpg)
Dépôts distants et gestion de la concurrence.
C1
C2
C2
C3
C8C5
C4
C5
C6C7
orig
in/m
aste
r
mas
ter
foo
orig
in/fo
o
cont
rib/b
ar
C1
C2
C3C4
C5
C6C7
mas
ter
foo
C1
C2
C3
C8
C4
C4
C5
C6C7C7
orig
in/m
aste
r
mas
ter
orig
in/fo
o
bar
git pull origin
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 71 / 87
![Page 111: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/111.jpg)
Dépôts distants et gestion de la concurrence.
C1
C2
C2
C3
C8C5
C4
C5
C6C7
orig
in/m
aste
r
mas
ter
foo
orig
in/fo
o
cont
rib/b
ar
C1
C2
C3C4
C5
C6C7
mas
ter
foo
C1
C2
C3
C8
C4
C4
C5
C6C7C7
orig
in/m
aste
r
mas
ter
orig
in/fo
o
bar
git checkout -b foo
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 71 / 87
![Page 112: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/112.jpg)
Dépôts distants et gestion de la concurrence.
C1
C2
C2
C3
C8C5
C4
C5
C6
C7
orig
in/m
aste
r
mas
ter
foo
orig
in/fo
o
cont
rib/b
ar
C1
C2
C3C4
C5
C6C7
mas
ter
foo
C1
C2
C3
C8
C4
C4
C5
C6C7C7
orig
in/m
aste
r
mas
ter
orig
in/fo
o
bar
git commit
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 71 / 87
![Page 113: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/113.jpg)
Dépôts distants et gestion de la concurrence.
C1
C2
C2
C3
C8C5
C4
C5
C6
C7
orig
in/m
aste
r
mas
ter
foo
orig
in/fo
o
cont
rib/b
ar
C1
C2
C3C4
C5
C6C7
mas
ter
foo
C1
C2
C3
C8
C4
C4
C5
C6
C7
C7
orig
in/m
aste
r
mas
ter
orig
in/fo
o
bar
git commit
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 71 / 87
![Page 114: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/114.jpg)
Dépôts distants et gestion de la concurrence.
C1
C2
C2
C3
C8C5
C4
C5
C6
C7
orig
in/m
aste
r
mas
ter
foo
orig
in/fo
o
cont
rib/b
ar
C1
C2
C3C4
C5
C6
C7
mas
ter
foo
C1
C2
C3
C8
C4
C4
C5
C6C7
C7
orig
in/m
aste
r
mas
ter
orig
in/fo
o
bar
git push origin
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 71 / 87
![Page 115: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/115.jpg)
Dépôts distants et gestion de la concurrence.
C1
C2
C2
C3
C8C5
C4
C5
C6
C7
orig
in/m
aste
r
mas
ter
foo
orig
in/fo
o
cont
rib/b
ar
C1
C2
C3C4
C5
C6C7
mas
ter
foo
C1
C2
C3
C8
C4
C4
C5
C6C7
C7
orig
in/m
aste
r
mas
ter
orig
in/fo
o
bar
git push origin foo
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 71 / 87
![Page 116: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/116.jpg)
Dépôts distants et gestion de la concurrence.
C1
C2
C2
C3
C8C5
C4
C5
C6C7
orig
in/m
aste
r
mas
ter
foo
orig
in/fo
o
cont
rib/b
ar
C1
C2
C3C4
C5
C6C7
mas
ter
foo
C1
C2
C3
C8
C4
C4
C5
C6C7
C7
orig
in/m
aste
r
mas
ter
orig
in/fo
o
bar
git pull origin
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 71 / 87
![Page 117: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/117.jpg)
Dépôts distants et gestion de la concurrence.
C1
C2
C2
C3
C8C5
C4
C5
C6C7
orig
in/m
aste
r
mas
ter
foo
orig
in/fo
o
cont
rib/b
ar
C1
C2
C3C4
C5
C6C7
mas
ter
foo
C1
C2
C3
C8
C4
C4
C5
C6
C7
C7
orig
in/m
aste
r
mas
ter
orig
in/fo
o
bar
git pull origin
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 71 / 87
![Page 118: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/118.jpg)
Dépôts distants et gestion de la concurrence.
C1
C2
C2
C3
C8C5
C4
C5
C6C7
orig
in/m
aste
r
mas
ter
foo
orig
in/fo
o
cont
rib/b
ar
C1
C2
C3C4
C5
C6C7
mas
ter
foo
C1
C2
C3
C8
C4
C4
C5
C6
C7
C7
orig
in/m
aste
r
mas
ter
orig
in/fo
o
bar
git branch bargit checkout bar
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 71 / 87
![Page 119: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/119.jpg)
Dépôts distants et gestion de la concurrence.
C1
C2
C2
C3
C8C5
C4
C5
C6C7
orig
in/m
aste
r
mas
ter
foo
orig
in/fo
o
cont
rib/b
ar
C1
C2
C3C4
C5
C6C7
mas
ter
foo
C1
C2
C3
C8
C4
C4
C5
C6
C7
C7
orig
in/m
aste
r
mas
ter
orig
in/fo
o
bar
git commit
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 71 / 87
![Page 120: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/120.jpg)
Dépôts distants et gestion de la concurrence.
C1
C2
C2
C3
C8
C5
C4
C5
C6C7
orig
in/m
aste
r
mas
ter
foo
orig
in/fo
o
cont
rib/b
ar
C1
C2
C3C4
C5
C6C7
mas
ter
foo
C1
C2
C3
C8
C4
C4
C5
C6
C7
C7
orig
in/m
aste
r
mas
ter
orig
in/fo
o
bar
git remote add contrib git://...git fetchcontrib/bar
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 71 / 87
![Page 121: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/121.jpg)
Modeles de cooperation
• Un depot centralise (a la SVN) – mais avec les avantages desdepots locaux
• Un modele completement distribue: Un depot pour chaquedeveloppeur, chacun se synchronise chez les autres
• Le modele avec un gestionnaire d’integration
• Le modele dictateur et ses lieutenants (noyau linux)
56
![Page 122: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/122.jpg)
Modèle avec dépôt centralisé"Centralized Workflow."
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 74 / 87
![Page 123: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/123.jpg)
Modèle décentralisé avec dépôts publics."Cooperative and Decentralized Workflow."
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 75 / 87
![Page 124: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/124.jpg)
Modèle décentralisé avec dépôts publics."Cooperative and Decentralized Workflow."
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 75 / 87
![Page 125: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/125.jpg)
Modèle avec manager de dépôt"Integration-Manager Workflow."
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 76 / 87
![Page 126: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/126.jpg)
Modèle avec manager de dépôt"Integration-Manager Workflow."
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 76 / 87
![Page 127: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/127.jpg)
Modèle avec manager de dépôt"Integration-Manager Workflow."
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 76 / 87
![Page 128: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/128.jpg)
Modèle avec dictateur et lieutenants."Dictator and Lieutenants Workflow."
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 77 / 87
![Page 129: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/129.jpg)
Modèle avec dictateur et lieutenants."Dictator and Lieutenants Workflow."
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 77 / 87
![Page 130: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/130.jpg)
Quelques liens utiles
• https://git-scm.com/book/fr/v2
• http://julien.sopena.fr/enseignements/M2-SAR-Git/
cours/01-Git/01-Git.pdf
• https://www.kernel.org/pub/software/scm/git/docs/
giteveryday.html
• https://alexgirard.com/git-book/index.html
57
![Page 131: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/131.jpg)
References
• Notes de D. Donsez
• Notes de J. Sopena
• Notes de B. Goglin
• Notes de B. Florat
58
![Page 132: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/132.jpg)
Plus de slides ...
59
![Page 133: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/133.jpg)
Étude des objets générés par un exemple simple.
mkdir projectcd projectgit init
echo "toto" > foo.txtgit add foo.txt
git commit -m "Add foo.txt"
mkdir direcho "titi" > dir/bar.txtgit add dir/bar.txt
git commit -m "Add dir/bar.txt"
echo "tutu" » dir/bar.txtgit add dir/bar.txt
git commit -m "Modif dir/bar.txt"
master
Commit4546...
Commit7126...
Commita440...
Tree6994...
CommitnotVisible...
Tree676e...
Tree4ab5...
Blob7a35...
foo.txt
head
master master
head
master
head
Index
Index Index
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 43 / 87
![Page 134: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/134.jpg)
Étude des objets générés par un exemple simple.
mkdir projectcd projectgit init
echo "toto" > foo.txtgit add foo.txt
git commit -m "Add foo.txt"
mkdir direcho "titi" > dir/bar.txtgit add dir/bar.txt
git commit -m "Add dir/bar.txt"
echo "tutu" » dir/bar.txtgit add dir/bar.txt
git commit -m "Modif dir/bar.txt"
master
Commit4546...
Commit7126...
Commita440...
Tree6994...
CommitnotVisible...
Tree676e...
Tree4ab5...
Blob7a35...
foo.txt
head
master master
head
master
head
Index
Index Index
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 43 / 87
![Page 135: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/135.jpg)
Étude des objets générés par un exemple simple.
mkdir projectcd projectgit init
echo "toto" > foo.txtgit add foo.txt
git commit -m "Add foo.txt"
mkdir direcho "titi" > dir/bar.txtgit add dir/bar.txt
git commit -m "Add dir/bar.txt"
echo "tutu" » dir/bar.txtgit add dir/bar.txt
git commit -m "Modif dir/bar.txt"
master
Commit4546...
Commit7126...
Commita440...
Tree6994...
CommitnotVisible...
Tree676e...
Tree4ab5...
Blob7a35...
foo.txt
head
master
master
head
master
head
Index
Index
Index
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 43 / 87
![Page 136: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/136.jpg)
Étude des objets générés par un exemple simple.
mkdir projectcd projectgit init
echo "toto" > foo.txtgit add foo.txt
git commit -m "Add foo.txt"
mkdir direcho "titi" > dir/bar.txtgit add dir/bar.txt
git commit -m "Add dir/bar.txt"
echo "tutu" » dir/bar.txtgit add dir/bar.txt
git commit -m "Modif dir/bar.txt"
master
Commit4546...
Commit7126...
Commita440...
Tree6994...
CommitnotVisible...
Tree676e...
Tree9a99...
dir
Blob8983...
bar.txt
Tree4ab5...
Blob7a35...
foo.txt
head
master
master
head
master
head
Index
Index
Index
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 43 / 87
![Page 137: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/137.jpg)
Étude des objets générés par un exemple simple.
mkdir projectcd projectgit init
echo "toto" > foo.txtgit add foo.txt
git commit -m "Add foo.txt"
mkdir direcho "titi" > dir/bar.txtgit add dir/bar.txt
git commit -m "Add dir/bar.txt"
echo "tutu" » dir/bar.txtgit add dir/bar.txt
git commit -m "Modif dir/bar.txt"
master
Commit4546...
Commit7126...
Commita440...
Tree6994...
CommitnotVisible...
Tree676e...
Tree9a99...
dir
Blob8983...
bar.txt
Tree4ab5...
Blob7a35...
foo.txt
head
master
master
head
master
head
Index Index
Index
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 43 / 87
![Page 138: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/138.jpg)
Étude des objets générés par un exemple simple.
mkdir projectcd projectgit init
echo "toto" > foo.txtgit add foo.txt
git commit -m "Add foo.txt"
mkdir direcho "titi" > dir/bar.txtgit add dir/bar.txt
git commit -m "Add dir/bar.txt"
echo "tutu" » dir/bar.txtgit add dir/bar.txt
git commit -m "Modif dir/bar.txt"
master
Commit4546...
Commit7126...
Commita440...
Tree6994...
CommitnotVisible...
Treebc45...
dir
Blob4f55...
bar.txt v2
Tree676e...
Tree9a99...
dir
Blob8983...
bar.txt
Tree4ab5...
Blob7a35...
foo.txt
head
master
master
head
master
head
Index Index
Index
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 43 / 87
![Page 139: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/139.jpg)
Étude des objets générés par un exemple simple.
mkdir projectcd projectgit init
echo "toto" > foo.txtgit add foo.txt
git commit -m "Add foo.txt"
mkdir direcho "titi" > dir/bar.txtgit add dir/bar.txt
git commit -m "Add dir/bar.txt"
echo "tutu" » dir/bar.txtgit add dir/bar.txt
git commit -m "Modif dir/bar.txt"
master
Commit4546...
Commit7126...
Commita440...
Tree6994...
CommitnotVisible...
Treebc45...
dir
Blob4f55...
bar.txt v2
Tree676e...
Tree9a99...
dir
Blob8983...
bar.txt
Tree4ab5...
Blob7a35...
foo.txt
head
master master
head
master
head
Index Index Index
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 43 / 87
![Page 140: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/140.jpg)
Étude des objets générés par un exemple simple.
mkdir projectcd projectgit init
echo "toto" > foo.txtgit add foo.txt
git commit -m "Add foo.txt"
mkdir direcho "titi" > dir/bar.txtgit add dir/bar.txt
git commit -m "Add dir/bar.txt"
echo "tutu" » dir/bar.txtgit add dir/bar.txt
git commit -m "Modif dir/bar.txt"
master
Commit4546...
Commit7126...
Commita440...
Tree6994...
CommitnotVisible...
Treebc45...
dir
Blob4f55...
bar.txt v2
Tree676e...
Tree9a99...
dir
Blob8983...
bar.txt
Tree4ab5...
Blob7a35...
foo.txt
head
master master
head
master
head
Index Index Index
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 43 / 87
![Page 141: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/141.jpg)
Merge avec fast forward
• Merge avec une branche maBranche qui est en avance sur labranche master
• La branche master ne contient pas de commits non presentsdans l’historique de maBranche
• Fast Foward: Pas besoin d’un nouveau commit, la branchemaster peu simplement etre deplacee vers le dernier commitde la branche maBranche
• Ce comportement peut etre desactive avec l’option –no-ff
60
![Page 142: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/142.jpg)
Merge : exemple sur un historique unique.
lsfoo.txt dir
git branch maBranche
git checkout maBranche
echo "toto" > fichier1.txtgit add fichier1.txtgit commit -m "Add fichier1.txt"
echo "titi" > fichier1.txtgit commit -am "Modiffichier1.txt"
git checkout masterlsdir foo.txt
git merge maBranchecat fichier1.txttiti
git branch -d maBranche
45463
7126f
a4407
15e12
4a439
15e12
4a439
25b06
57669
master
head
maBranche
headmaBranche
headmaBranche
head
master
head
maBranchemaster
head headmaBranche
headmaster
head
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 48 / 87
![Page 143: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/143.jpg)
Merge : exemple sur un historique unique.
lsfoo.txt dir
git branch maBranche
git checkout maBranche
echo "toto" > fichier1.txtgit add fichier1.txtgit commit -m "Add fichier1.txt"
echo "titi" > fichier1.txtgit commit -am "Modiffichier1.txt"
git checkout masterlsdir foo.txt
git merge maBranchecat fichier1.txttiti
git branch -d maBranche
45463
7126f
a4407
15e12
4a439
15e12
4a439
25b06
57669
master
head
maBranche
headmaBranche
headmaBranche
head
master
head
maBranchemaster
head headmaBranche
headmaster
head
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 48 / 87
![Page 144: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/144.jpg)
Merge : exemple sur un historique unique.
lsfoo.txt dir
git branch maBranche
git checkout maBranche
echo "toto" > fichier1.txtgit add fichier1.txtgit commit -m "Add fichier1.txt"
echo "titi" > fichier1.txtgit commit -am "Modiffichier1.txt"
git checkout masterlsdir foo.txt
git merge maBranchecat fichier1.txttiti
git branch -d maBranche
45463
7126f
a4407
15e12
4a439
15e12
4a439
25b06
57669
master
head
maBranche
head
maBranche
headmaBranche
head
master
head
maBranchemaster
head headmaBranche
headmaster
head
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 48 / 87
![Page 145: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/145.jpg)
Merge : exemple sur un historique unique.
lsfoo.txt dir
git branch maBranche
git checkout maBranche
echo "toto" > fichier1.txtgit add fichier1.txtgit commit -m "Add fichier1.txt"
echo "titi" > fichier1.txtgit commit -am "Modiffichier1.txt"
git checkout masterlsdir foo.txt
git merge maBranchecat fichier1.txttiti
git branch -d maBranche
45463
7126f
a4407
15e12
4a439
15e12
4a439
25b06
57669
master
head
maBranche
headmaBranche
head
maBranche
head
master
head
maBranchemaster
head headmaBranche
headmaster
head
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 48 / 87
![Page 146: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/146.jpg)
Merge : exemple sur un historique unique.
lsfoo.txt dir
git branch maBranche
git checkout maBranche
echo "toto" > fichier1.txtgit add fichier1.txtgit commit -m "Add fichier1.txt"
echo "titi" > fichier1.txtgit commit -am "Modiffichier1.txt"
git checkout masterlsdir foo.txt
git merge maBranchecat fichier1.txttiti
git branch -d maBranche
45463
7126f
a4407
15e12
4a439
15e12
4a439
25b06
57669
master
head
maBranche
headmaBranche
head
maBranche
head
master
head
maBranchemaster
head headmaBranche
headmaster
head
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 48 / 87
![Page 147: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/147.jpg)
Merge : exemple sur un historique unique.
lsfoo.txt dir
git branch maBranche
git checkout maBranche
echo "toto" > fichier1.txtgit add fichier1.txtgit commit -m "Add fichier1.txt"
echo "titi" > fichier1.txtgit commit -am "Modiffichier1.txt"
git checkout masterlsdir foo.txt
git merge maBranchecat fichier1.txttiti
git branch -d maBranche
45463
7126f
a4407
15e12
4a439
15e12
4a439
25b06
57669
master
head
maBranche
headmaBranche
head
maBranche
head
master
head
maBranchemaster
head headmaBranche
headmaster
head
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 48 / 87
![Page 148: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/148.jpg)
Merge : exemple sur un historique unique.
lsfoo.txt dir
git branch maBranche
git checkout maBranche
echo "toto" > fichier1.txtgit add fichier1.txtgit commit -m "Add fichier1.txt"
echo "titi" > fichier1.txtgit commit -am "Modiffichier1.txt"
git checkout masterlsdir foo.txt
git merge maBranchecat fichier1.txttiti
git branch -d maBranche45463
7126f
a4407
15e12
4a439
15e12
4a439
25b06
57669
master
head
maBranche
headmaBranche
headmaBranche
head
master
head
maBranchemaster
head headmaBranche
headmaster
head
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 48 / 87
![Page 149: DevOps - Gestionnaires de versions - Thomas Ropars...Gestion des acc es concurrents Gestion pessimiste Un seul contributeur a acc es en ecriture a un chier Pas de con its Pas pratique](https://reader036.vdocuments.net/reader036/viewer/2022081517/5f93b53e42c23f42ec6848c0/html5/thumbnails/149.jpg)
Comparaison : git diff
I Différences entre le répertoire de travail et l’index :$ git diff
I Différences entre HEAD et l’index :$ git diff --staged
I Différences entre répertoire de travail et HEAD :$ git diff HEAD
I Différences entre répertoire de travail et un autre commit :$ git diff <commit_1>
I Différences entre deux commit :$ git diff <commit_1> <commit_2>
J. Sopena (INRIA/UPMC) Git, un gestionnaire de versions décentralisé. 60 / 87