0% ont trouvé ce document utile (0 vote)
15 vues204 pages

Introduction à Git et gestion des versions

Le document présente Git, un système de gestion de versions décentralisé créé en 2005, qui permet de suivre les modifications d'un projet et de faciliter la collaboration entre développeurs. Il explique les concepts clés tels que les commits, les révisions, et les branches, ainsi que des commandes de base pour gérer les fichiers et les modifications. Enfin, il aborde l'initialisation d'un répertoire distant et les opérations de clonage et de poussée vers un dépôt distant.

Transféré par

Lamia Ouammar
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
15 vues204 pages

Introduction à Git et gestion des versions

Le document présente Git, un système de gestion de versions décentralisé créé en 2005, qui permet de suivre les modifications d'un projet et de faciliter la collaboration entre développeurs. Il explique les concepts clés tels que les commits, les révisions, et les branches, ainsi que des commandes de base pour gérer les fichiers et les modifications. Enfin, il aborde l'initialisation d'un répertoire distant et les opérations de clonage et de poussée vers un dépôt distant.

Transféré par

Lamia Ouammar
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Git

Suivez vos modifications

Achille MBOUGUENG
DEVOPS / TRAINER

[Link]
[Link]@[Link]

2
PRÉSENTATION
4
[Link] Local

Même site
En ligne
&
En local

5
[Link] Local

Nouvelle
modification
En local

6
[Link] Local

Correction d’un
bug en local sur
le label

7
Local

Comment tracker(suivre)

le modifications effectuées sur l’application ?

8
Content Tracker
Système de gestion de versions distribués
Git est un système de gestion de versions
Local

décentralisé, aussi appelé DVCS(Distributed


Version Control System)

Il a été créé en 2005 par les équipes en charge du


noyau Linux

En particulier Linus Torvalds, suite à une rupture


des relations avec l'éditeur de Bitkeeper
10
Git va permettre de sauvegarder les différentes
Local

versions d'un même fichier et ainsi de suivre


l'historique d'un projet
Git gère les fichiers texte(code, xml, …) mais
aussi des fichiers binaires
Système décentralisé qui va faciliter la
collaboration entre plusieurs développeurs au sein
d'un même projet
11
La concurrence Local

12
Avantages Local

Avoir une vision précise des modifications


apportées (qui, quoi, quand, comment)

Tester des modifications, voir ce que cela donne et


au besoin annuler les modifications apportées

Consulter une version antérieure du projet, voire


travailler à partir de cette version
13
VOCABULAIRE
Repository Local

Le repository est l'ensemble


de l'historique d'un projet

15
Commit Local

Commit (ou validation) Dans le contexte de


Git, il s'agit de l'ensemble des fichiers d'un
projet au moment où le commit a été effectué
16
Revision Local

● Modification apportée au dépôt


● Un commit est une révision
● Un fichier modifié lors d'un commit constitue
aussi une révision de ce fichier
● Toute révision dans Git est identifiée par une
empreinte SHA-1
17
Local

Nouvel état de votre site avec les


modifications effectuées en local

Etat de votre site web hébergé

18
Bouton CSS corrigé @vadil 12:23

Image d’arrière-plan modifiée @marlène 11:15

Sous-titre ajouté @achille 11:05

Boutons de navigation corrigé @vadil 10:45

Ajout de la page d’accueil @marlène 10:24

19
Arrière plan modifié

Ajout de la page d’accueil

20
[Link]

Correction d’une erreur


Arrière plan-modifié de frappe sur le bouton

Ajout de la page d’accueil

21
Répertoire Distant

Répertoire Local

<html>
<body>
<h1>Mon Siteweb!</h1>
</body>
</html>

22
Répertoire Distant

<html>
<body>
<h1>Mon Siteweb!</h1>
</body>
</html>

Répertoire Local Répertoire Local

<html>
<body>
<h1>Mon Siteweb!</h1>
</body>
</html>

23
Répertoire Distant

<html>
<body>
<h1>Mon Siteweb!</h1>
</body>
</html>

Répertoire Local Répertoire Local

<html>
<body>
<h1>Mon Siteweb!</h1>
</body>
</html>

24
Répertoire Distant

<html>
<body>
<h1>Mon Siteweb!</h1>
</body>
</html>

Répertoire Local Répertoire Local

<html>
<html>
<body>
<body>
<h1>Mon Siteweb!</h1>
<h1>Mon Siteweb!</h1>
</body>
<p>Voici un texte supplémentaire!</p>
</html>
</body>
</html>

25
Répertoire Distant

<html>
<body>
<h1>Mon Siteweb!</h1>
<p>Voici un texte supplémentaire!</p>
</body>
</html>

Répertoire Local Répertoire Local

<html>
<html>
<body>
<body>
<h1>Mon Siteweb!</h1>
<h1>Mon Siteweb!</h1>
</body>
<p>Voici un texte supplémentaire!</p>
</html>
</body>
</html>

26
Répertoire Local

Espace de travail Zone de transit Fichiers validés


(Working Area) (Staging Area) (Committed files)

27
Répertoire Local

Espace de travail Zone de transit Fichiers validés


(Working Area) (Staging Area) (Committed files)

[Link]

[Link]

28
Bouton CSS corrigé @vadil commit

Image d’arrière-plan modifiée @marlène commit

Sous-titre ajouté @achille commit

Boutons de navigation corrigé @vadil commit

Ajout de la page d’accueil @marlène commit

29
Syntaxe
Git fonctionne en ligne de commande Local

Des outils graphiques existent (voir dernière partie)


mais ils ne font que lancer, dans les coulisses, des
commandes Git

git <commande> <parametres>


31
Installer
[Link]

33
Configuration
git config --global [Link] "Achille"

git config --global [Link] accueil@[Link]

34
Vérification

cat $HOME/.gitconfig

35
Initialisation du
répertoire Git
Initialized empty Git repository in

/Users/Chilltech/Desktop/myproject/.git/

37
$ ls -a
. .. .git

38
TP
Dans votre répertoire documents créer un répertoire

formation-git

Transformez le répertoire git

39
Gestion des
modifications
$ touch [Link]
$ echo "This is a beautiful story" >> [Link]

41
$ git status
On branch master

No commits yet

Untracked files:
[Link]
42
TP
formation-git

Créer un fichier [Link] et placez y le texte de votre choix

Vérifiez que le texte est bien dans le statut

43
$

Espace de travail Zone de transit Fichiers validés


(Working Area) (Staging Area) (Committed files)

[Link]
44
$ git add [Link]

Espace de travail Zone de transit Fichiers validés


(Working Area) (Staging Area) (Committed files)

[Link]
45
$ git commit -m "Added first story"

Espace de travail Zone de transit Fichiers validés


(Working Area) (Staging Area) (Committed files)

[Link]
46
première modification @Moi

47
TP
formation-git

Placez le fichier dans le stash

Enregistrez le

48
Git log
$ git log

commit 67c833e3…ecb7df62f (HEAD -> master)

Author: Achille Mbougueng <achille@mbougueng>

Date: Dim Jun 14 14:45:07 2020 -0700

Added first story

50
$ git log —-oneline

67c833e (HEAD -> master) Added first story

51
TP
formation-git

Vérifiez le contenu du répertoire

52
TP
formation-git
Créer cinq liens dans le readme ENREGISTRER CHAQUE LIEN
log
Commit
reset
Merge
Rebase

53
Branches
cinquième modification @moi

quatrième modification @ami

troisième modification @ami

seconde modification @ami

première modification @moi

55
septième modification @ami

sixième modification @ami

quatrième modification @ami


modification @moi

modification @moi

modification @moi

56
Branche fusionnée Dave @ami

A ajouter une septième modification @ami

A ajouter une sixième modification @ami

A ajouter une quatrième modification @ami


A ajouter une cinquième modification
@moi

A ajouter une cinquième modification


@moi
A ajouter une quatrième modification
@moi

57
Tests actualisés

A ajouté de nouvelles fonctionnalités

58
Tests actualisés

A ajouté de nouvelles fonctionnalités

59
$ git checkout -b marlène

Switched to a new branch 'marlène'

$ git branch

master

* marlène

60
A ajouté une première modification master marlène
@moi

61
A ajouté une seconde modification
@marlène

A ajouté une première modification master marlène


@moi

62
A ajouté une seconde modification marlène
@marlène

A ajouté une première modification master


@moi

63
A ajouté une seconde modification marlène
@marlène

A ajouté une première modification master vadil


@moi

64
A ajouté une seconde modification marlène
@marlène

A ajouté une première modification master vadil


@moi

65
marlène
A ajouté une seconde modification A ajouté une troisième modification @vadil
@marlène

A ajouté une première modification master vadil


@moi

66
Fusion
marlène vadil

A ajouté une seconde modification A ajouté une troisième modification @vadil


@marlène

A ajouté une première modification master


@moi

68
$ git checkout master

marlène vadil

A ajouté une seconde modification A ajouté une troisième modification @vadil


@marlène

A ajouté une première modification master


@moi

69
$ git checkout master
$ git merge vadil

marlène vadil

A ajouté une seconde modification A ajouté une troisième modification @vadil


@marlène

A ajouté une première modification master


@moi

70
$ git checkout master
$ git merge vadil

marlène vadil
master
A ajouté une seconde modification A ajouté une troisième modification @vadil
@marlène

A ajouté une première modification


@moi

71
$ git merge marlène

marlène vadil
master
A ajouté une seconde modification A ajouté une troisième modification @vadil
@marlène

A ajouté une première modification


@moi

72
$ git merge marlène

Fusion marlène dans master @marlène

marlène vadil
master
A ajouté une seconde modification A ajouté une troisième modification @vadil
@marlène

A ajouté une première modification


@moi

73
$ git merge marlène

Fusion marlène dans master @marlène

marlène vadil
master
A ajouté une seconde modification A ajouté une troisième modification @vadil
@marlène

A ajouté une première modification


@moi

74
Rebasage
$ git merge marlene

Fusion marlène dans master @marlène

marlène vadil
master
A ajouté une seconde modification A ajouté une troisième modification @vadil
@marlène

A ajouté une première modification


@moi

76
$ git rebase marlene

marlène vadil
master
A ajouté une seconde modification A ajouté une troisième modification @vadil
@marlène

A ajouté une première modification


@moi

77
$ git rebase marlene

marlène
A ajouté une seconde modification master
@marlène

vadil

A ajouté une troisième modification @vadil

A ajouté une première modification


@moi

78
$ git rebase marlene

marlène vadil
master
A ajouté une seconde modification jf79w 7wtf78 A ajouté une troisième modification @vadil
@marlène

A ajouté une première modification


89fej
@moi

79
$ git merge marlene

Fusion marlene dans master @marlène


90f7d

marlene vadil
master
A ajouté une seconde modification jf79w 7wtf78 A ajouté une troisième modification @vadil
@marlene

A ajouté une première modification


89fej
@moi

80
$ git rebase marlene

marlène vadil
master
A ajouté une seconde modification jf79w 7wtf78 A ajouté une troisième modification @vadil
@marlène

A ajouté une première modification


89fej
@moi

81
$ git rebase marlene

marlène
A ajouté une seconde modification master
@marlène
890sf

vadil

7wtf78 A ajouté une troisième modification @vadil

A ajouté une première modification


89fej
@moi

82
Initialisation d'un
répertoire distant
84
Chaîne de connexion

[Link]

85
86
$ git remote add origin [Link]
[Link]
Répertoire Distant

Répertoire Local

Espace de travail Zone de transit Fichiers validés


(Working Area) (Staging Area) (Committed files)

87
$ git remote -v

origin [Link] (fetch)

origin [Link] (push)

88
Clonage
$ git clone <ssh link>

90
91
$ git clone git@[Link]:….…git

Cloning into 'remote-repo'...

remote: Enumerating objects: 59, done.

remote: Counting objects: 100% (59/59), done.

remote: Compressing objects: 100% (43/43), done.

remote: Total 2948 (delta 28), reused 18 (delta 6)

Receiving objects: 100% (2948/2948), 1.93 MiB | 2.53 MiB/s, done.

Resolving deltas: 100% (1526/1526), done.

92
$ cd remote-repo

$ git log

commit 67c833e3…ecb7df62f (HEAD -> origin/master)

Author: Achille Mbougueng <achille@mbougueng>

Date: Dim Jun 14 14:45:07 2020 -0700

Added first story

93
Pushing
Répertoire Distant

Répertoire Local

<html>
<body>
<h1>Mon Siteweb!</h1>
</body>
</html>

95
$ git push origin master

96
cinquième modification @moi

quatrième modification @moi

troisième modification @moi

seconde modification @moi local distant

première modification @moi

97
Fetching and Pulling
$ git push origin master

marlène vadil
origin/marlene
seconde modification @marlène A ajouté la troisième modification @vadil

première modification @moi master origin/master

99
$ git push origin/master

origin/master

marlène vadil
origin/marlene
seconde modification @marlène A ajouté la troisième modification @vadil

première modification @moi master

100
$ git pull origin master

marlène vadil
origin/marlene
seconde modification @marlène A ajouté la troisième modification @vadil

première modification @moi master origin/master

101
Requête Pull
marlène vadil

seconde modification @marlène A ajouté la troisième modification @vadil

première modification @moi master origin/master

103
$ git push origin marlene

marlène vadil
origin/marlene
seconde modification @marlène A ajouté la troisième modification @vadil

première modification @moi master origin/master

104
105
106
107
108
109
Ignorer des fichiers
.git/info/exclude
.gitignore

Un fichier versionné ne peut pas être


exclus

111
112
113
*
!foo
foo/*
!foo/bar
Login.*

114
TP
Créer un .gitignore

ignorer des répertoires et des fichiers

115
Supprimer un commit
Lister les commits

117
Lister les commits

118
Supprimer le dernier commit

git reset --soft HEAD~1

119
Enregistrer la mis à jour supprimée

git commit -a --amend --no-edit

120
TP
Créer un commit supprimer

Supprimer le commit

121
Lister les commits

git rebase -i HEAD~n

122
Supprimer les commits

123
TP
Créer un commit supprimer

Créer un commit à conserver

Supprimer le commit

124
STASH
Avantages Local

Permet mettre de côté un travail non commité et le


réutiliser plus tard
Le repository devient dans un état propre que le
développeur maîtrise

Le développeur pourra ainsi mettre de côté un


travail faire un merge et revenir continuer son
travail
126
Répertoire avec des modifications
Local

127
Mettre de côté le travail

git stash

128
Vérifier

Branche clean

Numéro Branche

129
Contenu du stash

130
Contenu du stash

131
TP
Dans une branche, créer un fichier [Link]

Mettre à jour le lien dans le readme

Mettre de côté des modifications

Faire les vérifications


132
Récupérer le dernier

git stash pop

133
Nommer un stash

git stash -m “nom du stash”

134
Choisir le stash à récupérer

git stash pop --index NUMERO

135
Créer une branche à partir d’un stash

git stash branch NOM_BRANCHE NUMERO

136
Supprimer tous les stashs

git stash clear

137
TP
Dans une branche, créer un fichier [Link]

Mettre de côté des modifications

Déplacer les modifications dans une branche

Supprimer tous les stashs

138
Renommer un commit
Consulter les commits

git rebase -i HEAD~4

140
Consulter les commits

141
Renommer un commit

Attention des sha1 ne sont plus les mêmes

142
TP

Créer et renommer un commit avec rebase

143
Fusion de commits
SQUASH
Plusieurs commits en un

145
Consulter les commits

git rebase -i HEAD~4

146
Consulter les commits

147
Fusionner les commits

148
TP

Sur votre branche supprimer tous les commits intermédiaires

Ne garder que le dernier

149
Fusion de commits
FIXUP
Plusieurs commits en un

151
Consulter les commits

git rebase -i HEAD~4

152
Consulter les commits

153
Fusionner les commits

fixup
f

154
TP

Sur votre branche supprimer tous les commits intermédiaires

Ne garder que le dernier

155
Conflits de fusion
Fusion marlène dans master @marlène

marlène vadil
master
A ajouté une seconde modification A ajouté une troisième modification @vadil
@marlène

A ajouté une première modification


@moi

157
quatrieme_modification.md quatrieme_modification.md

## Quatrième ## Quatrième
modification modification

Voici la version de Marlène sur Voici la version de Vadil sur


la quatrième modification. la quatrième modification.

Quelques éléments
supplémentaires ajoutés par
Marlène

marlène vadil

A commencé la quatrième A commencé la quatrième modification


modification modification @vadil
@marlène

master

158
marlène vadil

A commencé la quatrième modification A commencé la quatrième modification


@marlène @vadil

master

159
master marlène vadil

A commencé la quatrième modification


A commencé la quatrième modification
@vadil
@marlène

160
quatrieme_modification.md quatrieme_modification.md

## Quatrième ## Quatrième
modification modification

Voici la version de Marlène Voici la version de Vadil


sur la quatrième modification. sur la quatrième modification.

master marlène vadil

A commencé la quatrième modification


A commencé la quatrième modification
@vadil
@marlène

161
quatrieme_modificatio
[Link]

## Quatrième
modification
<<<<<<<< HEAD
Voici la version de Marlène

=======
Voici la version de Vadil
>>>>>>> max

de la quatrième
modification
Quelques éléments
supplémentaires ajoutés par
Marlène

162
quatrieme_modificatio
[Link]

## Quatrième
modification

Voici la version de Vadil

de la quatrième
modification !
Quelques éléments
supplémentaires ajoutés par
Marlène

163
$ git add quatrieme_modification.txt

$ git merde

master marlène vadil

A commencé la quatrième modification


A commencé la quatrième modification
@vadil
@marlène

164
$ git add quatrieme_modification.txt

$ git merde

Fusion Vadil dans Master @vadil

master marlène
vadil
A commencé la quatrième modification
A commencé la quatrième modification
@marlène
@vadil

165
Rebasage interactif
$

@marlène
Plus de modifications à la deuxième modification
@marlene 6a6f6

oops plus de modifications à la deuxième modification @marlene


8ad5d

A modifié la deuxième modification @marlene


aaba5

A ajouté une deuxième modification @marlene

fb9f1

167
$ git rebase -i HEAD~4

@marlène
Plus de modifications à la deuxième modification
@marlene 6a6f6

oops plus de modifications à la deuxième modification @marlene


8ad5d

A modifié la deuxième modification @marlene


aaba5

A ajouté une deuxième modification @marlene

fb9f1

168
$
$ git
gitrebase
rebase-i -i HEAD~4
HEAD~4
pick fb9f191 Added second story

pick aaba5e7 Changes to second story


pick 8ad5d7b Oops more changes to second story
pick 6a6f68b More changes to second story

169
$
$ git
gitrebase
rebase-i -i HEAD~4
HEAD~4
pick fb9f191 Added second story

pick aaba5e7 Changes to second story


pick 8ad5d7b Oops more changes to second story
pick 6a6f68b More changes to second story

170
$
$ git
gitrebase
rebase-i -i HEAD~4
HEAD~4
pick fb9f191 Added second story
pick aaba5e7 Changes to second story
pick 8ad5d7b Oops more changes to second story
pick 6a6f68b More changes to second story

171
$ git rebase -i HEAD~4

@marlène
Plus de modifications à la deuxième modification
@marlene 6a6f6

oops plus de modifications à la deuxième modification @marlene


8ad5d

A modifié la deuxième modification @marlene


aaba5

A ajouté une deuxième modification @marlene

fb9f1

172
$ git rebase -i HEAD~4

oops plus de modifications à la deuxième


modification

A ajouté une deuxième modification @marlene @marlène


A modifié la deuxième 81h48
modification
Plus de modifications à la deuxième
modification

173
Cherry-Picking
$ git log --pretty=oneline --abbrev-commit

marlène

A modifié la deuxième modification @marlene


8ad5d

a modifié la première modification


@marlene aaba5

A ajouté la deuxième modification @marlene

jf79w

A ajouté la première modification


@moi 89fej

175
$ git cherry-pick aaba5

marlène

A modifié la deuxième modification @marlene


8ad5d

a modifié la première modification


@marlene aaba5

A ajouté la deuxième modification @marlene

jf79w

A ajouté la première modification


@moi 89fej

176
$ git cherry-pick aaba5

marlène

A modifié la deuxième modification @marlene


8ad5d

a modifié la première modification


@marlene aaba5

A ajouté la deuxième modification @marlene

jf79w 89hd8

A ajouté la première modification


@moi 89fej

177
$ git cherry-pick aaba5

marlène

A modifié la deuxième modification @marlene


8ad5d

a modifié la première modification


@marlene aaba5

A ajouté la deuxième modification @marlene

jf79w 89hd8

A ajouté la première modification


@moi 89fej

178
$ git hash-object premiere_modification.txt

bea8d7fee8e7b11c2235ca623935e6ccccd8bac3

179
Consulter les commits

git log NOM_BRANCHE\


\--pretty=oneline
\--abbrev-commit

180
Récupérer les commits

git cherry-pick SHA1 SHA1

181
TP

Récupérer le commit d’une feature et l’appliquer dans le main

182
TP
Pour les actions ci dessous utiliser un message “merge and
rebase”

Créer et commiter un fichier [Link]

Créer et ajouter commit preccédent fichier [Link]

séparer les deux commit

183
Réinitialisation et
rétablissement
$

marlene
A ajouté la troisième modification @marlene
8ad5d

a modifié la seconde modification


@marlene
aaba5

A ajouté la seconde modification @marlene


fb9f1

185
$ git revert 8ad5d

A ajouté la troisième modification @marlene marlene + troisième_modificatio


8ad5d [Link]

a modifié la seconde modification


@marlene
aaba5

A ajouté la seconde modification @marlene


fb9f1

186
$ git revert 8ad5d

marlene -troisième_modification.md
890hs

A ajouté la troisième modification @marlene - troisième_modification.md


8ad5d

a modifié la seconde modification


@marlene
aaba5

A ajouté la seconde modification @marlene


fb9f1

187
$

marlene
A ajouté la troisième modification @marlene
8ad5d

a modifié la seconde modification


@marlene
aaba5

A ajouté la seconde modification @marlene


fb9f1

188
$ git reset —-soft HEAD~1

marlene
A ajouté la troisième modification @marlene
8ad5d

a modifié la seconde modification


@marlene
aaba5

A ajouté la seconde modification @marlene


fb9f1

189
$ git reset —-soft HEAD~1

a modifié la seconde modification marlene


@marlene
aaba5

A ajouté la seconde modification @marlene


fb9f1

190
$ git reset —-soft HEAD~1
$ git status

On branch marlene
Changes to be committed:

added: troisième_modification

a modifié la seconde modification marlene


@marlene
aaba5

A ajouté la seconde modification @marlene


fb9f1

191
$ git reset —-hard HEAD~1

marlene
A ajouté la troisième modification @marlene
8ad5d

a modifié la seconde modification


@marlene
aaba5

A ajouté la seconde modification @marlene


fb9f1

192
$ git reset —-hard HEAD~1

a modifié la seconde modification marlene


@marlene
aaba5

A ajouté la seconde modification @marlene


fb9f1

193
$ git reset —-hard HEAD~1
$ git status

On branch marlene

Nothing to commit

a modifié la seconde modification marlene


@marlene
aaba5

A ajouté la seconde modification @marlene


fb9f1

194
ALIAS
Quelques raccourcis utiles

196
Création

197
Vérification

198
TP

Créer un alias sur commit le tester

199
HOOKS
SCRIPTS qui s’exécutent avant git

201
202
203
TP

Ecrire un hook qui empêche le commit des png

204

Vous aimerez peut-être aussi