Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les...

127
Bruno Mermet 1 Gestion de version avec GIT Bruno Mermet Université du Havre 2017

Transcript of Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les...

Page 1: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

1

Gestion de version avecGIT

Bruno MermetUniversité du Havre

2017

Page 2: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

2

PréliminairesInstallation de git

● Allez à l'adresse suivante :

– https://git-scm.com/download/linux

● Pour les « roots » :

Exécuter la commande indiquée

exemple : sous Ubuntu, apt-get install git● Pour les autres :

– Cliquer sur le lien « download a tarball »

– Téléchargez la version de votre choix (git­1.9.1.tar.gz)

– Décompresser l'archive dans un répertoire $GIT

– cd $GIT ; ./configure ; make

– export PATH=$GIT:$PATH

Page 3: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

3

Plan

● Principes de la Gestion de Version– Gestion de version mono-document (T3)

– Gestion de version multi-documents (T12)

● Fonctionnement de GIT (T21)● Dépôt commun et application à Github

– Les bases (T72)

– Fork et pull request (T86)

● Bilan, conseils, astuces (T100)

Page 4: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

4

La gestion de version Mono-document

● Permettre d'avoir un historique des différentes versions d'un document avec :– Explications

– Retour en arrière possible

– Identification des versions

● Permettre le travail à plusieurs● Centraliser le dépôt des documents (sauvegardes)

Page 5: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

5

GV mono-document : Conflits (1/7)

Doc1v2

Dépôt

Dév A

Dév B

Doc1v2

Page 6: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

6

Doc1v2

GV mono-document : Conflits (2/7)

Doc1v2

Dépôt

Dév A

Dév B

Doc1v2

Page 7: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

7

Doc1v2

GV mono-document : Conflits (3/7)

Doc1v2

Dépôt

Dév A

Dév B

Doc1v2

Doc1v2

Page 8: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

8

Doc1v2

GV mono-document : Conflits (4/7)

Doc1v2

Dépôt

Dév A

Dév B

Doc1Doc1v3Av3A

Doc1v2

Doc1v2

Page 9: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

9

GV mono-document : Conflits (5/7)

Doc1v2

Dépôt

Dév A

Dév B

Doc1Doc1v3Av3A

Doc1v2

Doc1Doc1v3Bv3B

Page 10: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

10

GV mono-document : Conflits (6/7)

Dépôt

Dév A

Dév B

Doc1Doc1v3Av3A

Doc1Doc1v3Bv3B

Doc1Doc1v3Bv3B

Page 11: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

11

GV mono-document : Conflits (7/7)

Dépôt

Dév A

Dév B

Doc1Doc1v3Av3A

Doc1Doc1v3Bv3B

Doc1Doc1v3Av3A

Page 12: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

12

GV mono-document : solution● Gestion des conflits :

Utilisation de verrous pour modifier un document :● Check-out document (si pas de verrou sur le document, met un

verrou puis le récupère)● Édition du document en local● Check-in document (met la nouvelle version du document dans le

dépôt, libère le verrou, et supprime le document de la zone de travail)

● Implantations :– SCCS– RCS

● Stockage :– Stockage différentiel des fichiers textes via l'utilitaire diff.

Page 13: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

13

GV multi-documents

● Pourquoi :– Un projet = un ensemble de documents

– Une version d'un projet peut correspondre à des versions différentes de chacun des documents le composant

– Solution des verrous inexploitable

● Implantations :– CVS, reposant sur SCCS/RCS

– Subversion (SVN), évolution de CVS

– Git

– Autres (Mercurial, ClearCase, …)

Page 14: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

14

GV multi-documents : conflits

● Pas de verrous :– La récupération (update) d'une version est libre

– Les conflits sont détectés à la sauvegarde (commit) sur le dépôt :

● Pas de conflit, sauvegarde effectuée● Conflit, sauvegarde refusée

– Les conflits sont corrigés en local, lors de la récupération d'une nouvelle version

Page 15: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

15

GV multi-documents : conflits (1/14)

Dév A

Dév B

Doc 1v2

Page 16: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

16

GV multi-documents : conflits (2/14)

Dév A

Dév B

Doc 1v2

Doc1v2

Page 17: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

17

Doc1v2

GV multi-documents : conflits (3/14)

Dév A

Dév B

Doc 1v2

Doc1v2

Page 18: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

18

Doc1v2

Doc1v2

GV multi-documents : conflits (4/14)

Dév A

Dév B

Doc 1v2

Doc1Doc1v3A (v3A (v2)v2)

Page 19: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

19

Doc1v2

Doc1v2

Doc1Doc1v3B (v3B (v2)v2)

GV multi-documents : conflits (5/14)

Dév A

Dév B

Doc 1v2

Doc1Doc1v3A (v3A (v2)v2)

Page 20: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

20

Doc1Doc1v3B (v3B (v2)v2)

GV multi-documents : conflits (6/14)

Dév A

Dév B

Doc1Doc1v3B (v3B (v2)v2)

Doc1Doc1v3A (v3A (v2)v2)

Page 21: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

21

Doc1Doc1v3B (v3B (v2)v2)

GV multi-documents : conflits (7/14)

Dév A

Dév B

Doc1Doc1v3B (v3B (v2)v2)

Doc1Doc1v3A (v3A (v2)v2)

Page 22: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

22

Doc1Doc1v3B (v3B (v2)v2)

GV multi-documents : conflits (8/14)

Dév A

Dév B

Doc1Doc1v3B (v3B (v2)v2)

Doc1Doc1v3A (v3A (v2)v2)

Différence

Page 23: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

23

Doc1Doc1v3B (v3B (v2)v2)

GV multi-documents : conflits (9/14)

Dév A

Dév B

Doc1Doc1v3B (v3B (v2)v2)

Doc1Doc1v3A (v3A (v2)v2)

Différence

Risque de Conflit

Page 24: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

24

Doc1Doc1v3B (v3B (v2)v2)

GV multi-documents : conflits (10/14)

Dév A

Dév B

Doc1Doc1v3B (v3B (v2)v2)

Doc1Doc1v3A (v3A (v2)v2)

Différence

Risque de ConflitRefus

Page 25: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

25

Doc1Doc1v3B (v3B (v2)v2)

GV multi-documents : conflits (11/14)

Dév A

Dév B

Doc1Doc1v3B (v3B (v2)v2)

Doc1Doc1v3A (v3A (v2)v2)

Page 26: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

26

Doc1Doc1v3B (v3B (v2)v2)

GV multi-documents : conflits (12/14)

Dév A

Dév B

Doc1Doc1v3B (v3B (v2)v2)

Doc1Doc1v3A (v3A (v2)v2) Doc1Doc1

v3B (v3B (v2)v2)

Page 27: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

27

Doc1Doc1v3B (v3B (v2)v2)

GV multi-documents : conflits (13/14)

Dév A

Dév B

Doc1Doc1v3B (v3B (v2)v2)

Doc1Doc1v3A (v3A (v2)v2)

Doc1Doc1v3A (v3A (v3B)v3B)

Page 28: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

28

Doc1Doc1v3B (v3B (v2)v2)

GV multi-documents : conflits (14/14)

Dév A

Dév B

Doc1Doc1v3A (v3A (v2)v2)

Doc1Doc1v3A (v3A (v3B)v3B) Doc1Doc1

v3A (v3A (v3B)v3B)

Page 29: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

29

Gestion de version décentraliséePrincipes généraux

● Chaque développeur possède– Une version courante

– Sa propre version du dépôt

● Un (ou plusieurs) serveur(s) héberge(nt) une version du projet

● Le développeur utilise sont dépôt local pour gérer les versions

● Régulièrement, le développeur synchronise son dépôt local avec le(s) dépôt(s) distants

Page 30: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

30

Gestion de version décentraliséeOpérations principales

● Récupérer un projet depuis un serveur Clone

● Récupérer une version depuis son dépôtCheckout

● Sauvegarder une nouvelle version dans son dépôtCommit

● Transférer la version actuelle de son dépôt sur le serveurPush

● Récupérer une nouvelle version depuis le dépôtFetch/Pull

● Fusionner de versionsMerge

Page 31: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

31

Git : un système de gestion de versions décentralisé

● Créé en 2005 par Linus Torvalds pour le développement du noyau de Linux

● Utilisation git commandeGit paramètres

● Aide– git help commandeGit

– Livre Pro Git : https://git-scm.com/book/fr/v2

● Utilisation– Auparavant surtout pour les logiciels libres

– Depuis très récemment, adopté massivement par les entreprises (en lieu et place de subversion)

Page 32: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

32

Git : Plan

● Principes généraux (T23)● Fonctionnement de base

– Travail avec un seul fichier (T27)

– Travail avec plusieurs fichiers et fichier .gitignore (T37)

– Étiqueter une version (T41)

● Travailler avec les branches (T43)● Retour sur le fonctionnement de git en images (T64)

Page 33: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

33

Travailler avec Git● Travail en local

– Les différents états d'un fichier

– Créer son répertoire de travail

– Configurer git

– Exemple introductif avec un seul fichier

– L'historique

– Les étiquettes

– La notion de branche

● Synchronisation avec un autre dépôt

Page 34: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

34

Créer son répertoire de travail

● Créer le répertoire

mkdir Projet

● Aller dans le répertoire

cd Projet

● Initialiser le dépôt git

git init

.└── .git/ ├── branches/ ├── config ├── description ├── HEAD ├── hooks/ │ ├── applypatch-msg.sample │ ├── commit-msg.sample │ ├── post-update.sample │ ├── pre-applypatch.sample │ ├── pre-commit.sample │ ├── prepare-commit-msg.sample │ ├── pre-push.sample │ ├── pre-rebase.sample │ └── update.sample ├── info/ │ └── exclude ├── objects/ │ ├── info/ │ └── pack/ └── refs/ ├── heads/ └── tags/

Page 35: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

35

Configurer git● Configuration : les bases

– Configuration globale : git config --global

– Configuration pour le projet courant : git config

● Configuration : le minimum– git config --global user.name ''Prénom Nom''

– git config --global user.email ''adresseElectronique''

● Configuration : le petite plus– git config --global core.editor emacs

● Affichage– git config -l

Page 36: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

36

Statut d'un fichier

● Statuts possibles :– Modifié (ou créé) localement

– Prêt à être transféré dans le dépôt

– Tel que dans le dépôt

● Connaître le statut– git status

Sur la branche master

Validation initiale

rien à valider (créez/copiez des fichiers et utilisez "git add" pour les suivre)

Page 37: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

37

Statut d'un fichier

● Statuts possibles :– Modifié (ou créé) localement

– Prêt à être transféré dans le dépôt

– Tel que dans le dépôt

● Connaître le statut– git status

add

Sur la branche master

Validation initiale

rien à valider (créez/copiez des fichiers et utilisez "git add" pour les suivre)

Page 38: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

38

Statut d'un fichier

● Statuts possibles :– Modifié (ou créé) localement

– Prêt à être transféré dans le dépôt

– Tel que dans le dépôt

● Connaître le statut– git status

add

commit

Sur la branche master

Validation initiale

rien à valider (créez/copiez des fichiers et utilisez "git add" pour les suivre)

Page 39: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

39

Travail avec un fichierExemple (1)

● emacs Hello.java● ls● git statusSur la branche master

Validation initiale

Fichiers non suivis: (utilisez "git add <fichier>..." pour inclure dans ce qui sera validé)

Hello.java

aucune modification ajoutée à la validation mais des fichiers non suivis sont présents (utilisez "git add" pour les suivre)

Hello.java

Page 40: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

40

Travail avec un fichierExemple (2)

● javac Hello.java● ls● git statusSur la branche master

Validation initiale

Fichiers non suivis: (utilisez "git add <fichier>..." pour inclure dans ce qui sera validé)

Hello.classHello.java

aucune modification ajoutée à la validation mais des fichiers non suivis sont présents (utilisez "git add" pour les suivre)

Hello.class Hello.java

Page 41: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

41

Travail avec un fichierExemple (3)

● git add Hello.java● git status

Sur la branche master

Validation initiale

Modifications qui seront validées : (utilisez "git rm --cached <fichier>..." pour désindexer)

nouveau fichier: Hello.java

Fichiers non suivis: (utilisez "git add <fichier>..." pour inclure dans ce qui sera validé)

Hello.class

Page 42: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

42

Travail avec un fichierExemple (4)

● git commit -m ''Création du Hello standard''

● git statusSur la branche masterFichiers non suivis: (utilisez "git add <fichier>..." pour inclure dans ce qui sera validé)

Hello.class

aucune modification ajoutée à la validation mais des fichiers non suivis sont présents (utilisez "git add" pour les suivre)

[master (commit racine) fd577c3] Création du Hello standard 1 file changed, 5 insertions(+) create mode 100644 Hello.java

Page 43: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

43

Travail avec un fichierExemple (5)

● git log

commit fd577c31871eb2c938a5d772dd5a13cd7734fc83Author: Bruno Mermet <[email protected]>Date: Tue Jun 6 12:50:26 2017 +0200

Création du Hello standard

Page 44: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

44

Travail avec un fichierExemple (6)

● emacs Hello.java● javac Hello.java● git status Sur la branche masterModifications qui ne seront pas validées : (utilisez "git add <fichier>..." pour mettre à jour ce qui sera validé) (utilisez "git checkout -- <fichier>..." pour annuler les modifications dans la copie de travail)

modifié: Hello.java

Fichiers non suivis: (utilisez "git add <fichier>..." pour inclure dans ce qui sera validé)

Hello.class

aucune modification n'a été ajoutée à la validation (utilisez "git add" ou "git commit -a")

Page 45: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

45

Travail avec un fichierExemple (7)

● git add Hello.java● git status

Sur la branche masterModifications qui seront validées : (utilisez "git reset HEAD <fichier>..." pour désindexer)

modifié: Hello.java

Fichiers non suivis: (utilisez "git add <fichier>..." pour inclure dans ce qui sera validé)

Hello.class

Page 46: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

46

Travail avec un fichierExemple (8)

● git commit -m ''message plus long'' ; git status

● git log

Sur la branche masterFichiers non suivis: (utilisez "git add <fichier>..." pour inclure dans ce qui sera validé)

Hello.class

aucune modification ajoutée à la validation mais des fichiers non suivis sont présents (utilisez "git add" pour les suivre)

commit 18ef331bbe4ef1b36cf11e2a712da8945f8c7f00Author: Bruno Mermet <[email protected]>Date: Tue Jun 6 18:23:11 2017 +0200 message plus long

commit fd577c31871eb2c938a5d772dd5a13cd7734fc83Author: Bruno Mermet <[email protected]>Date: Tue Jun 6 12:50:26 2017 +0200

Création du Hello standard

Page 47: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

47

Simplifier la prise en comptes des fichiers modifiés

● Pour les fichiers modifiés (pas pour les fichiers créés), on peut remplacer :

– git add fic1 ; git add fic2

– git commit

● Par– git commit -a

Page 48: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

48

Travail avec un fichierExemple (9)

● git diff fd577cdiff --git a/Hello.java b/Hello.java

index 4593c25..5f3508d 100644--- a/Hello.java+++ b/Hello.java@@ -1,5 +1,5 @@ public class Hello { public static void main(String... args) {- System.out.println("Hello");+ System.out.print("Hello World"); } }

Page 49: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

49

Travailler avec plusieurs fichiers

● Ajouter plusieurs fichiers modifiés– git add repertoire (et notamment git add .)

● Ne pas faire gérer certains fichiers– Utilisation du fichier .gitignore

● Déplacer un fichier en gardant l'historique– git mv

● Faire ignorer un fichier jusqu'à présent pris en compte– git rm

Page 50: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

50

Format du fichier .gitignore (à faire gérer par git)

● Ref : https://git-scm.com/docs/gitignore ● 1 motif par ligne● Les lignes vides ne comptent pas● Les lignes commençant par un # sont des commentaires● Principales formes de motif (* = jocker sauf '/')

– chemin– chemin/– !motif– chemin/**/chemin– /chemin

Page 51: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

51

Format du fichier .gitignore (à faire gérer par git)

● Ref : https://git-scm.com/docs/gitignore ● 1 motif par ligne● Les lignes vides ne comptent pas● Les lignes commençant par un # sont des commentaires● Principales formes de motif (* = jocker sauf '/')

– chemin– chemin/– !motif– chemin/**/chemin– /chemin

*.class bin/

bin/**/*.class

Page 52: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

52

Travail avec un fichierExemple (10) : fichier .gitignore

● Avant création du .gitignore : git status

● Après création du .gitignore

Sur la branche masterFichiers non suivis: (utilisez "git add <fichier>..." pour inclure dans ce qui sera validé)

Hello.class

aucune modification ajoutée à la validation mais des fichiers non suivis sont présents (utilisez "git add" pour les suivre)

Sur la branche masterFichiers non suivis: (utilisez "git add <fichier>..." pour inclure dans ce qui sera validé)

.gitignore

aucune modification ajoutée à la validation mais des fichiers non suivis sont présents (utilisez "git add" pour les suivre)

Page 53: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

53

Travail avec un fichierExemple (11) : fichier .gitignore

● Faire gérer le .gitignore à gitgit commit -a -m ''ajout du fichier .gitignore pour ignorer

les fichiers .class''

git status

● git log --oneline

Sur la branche masterrien à valider, la copie de travail est propre

9da7eb1 ajout du fichier .gitignore pour ignorer les fichiers .class18ef331 message plus longfd577c3 Création du Hello standard

Page 54: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

54

Étiquetage d'une version

● Étiqueter une version permet de donner un nom à une version particulière pour s'y retrouver.

● Utilisation– git tag -a ''nomVersion''

– git tag -a ''nomVersion'' numVersion

Page 55: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

55

Travail avec un fichierExemple (12) : étiquetage

● git tag -a ''v1.0'' ; git log --decorate --oneline

● emacs Hello.java ; git commit -a -m ''au revoir''● git log --decorate --oneline

● git tag -a ''debut'' 9da7eb1 ; git log --decorate --oneline

9da7eb1 (HEAD, tag: v1.0, master) ajout du fichier .gitignore pour ignorer les fichiers .class18ef331 message plus longfd577c3 Création du Hello standard

4712b0f (HEAD, master) au revoir9da7eb1 (tag: v1.0) ajout du fichier .gitignore pour ignorer les fichiers .class18ef331 message plus longfd577c3 Création du Hello standard

4712b0f (HEAD, master) au revoir9da7eb1 (tag: v1.0, tag: debut) ajout du fichier .gitignore pour ignorer les fichiers .class18ef331 message plus longfd577c3 Création du Hello standard

Page 56: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

56

Notion de branche● Les Systèmes de Gestion de version permettent de créer

des branches● La création de branches permet de mener des

développements différents à partir d'un point donné, sans qu'il y ait interaction entre les 2 développements

● La fusion de branches est une fonction fondamentale, permettant de ré-intégrer dans une branche le travail fait dans une autre

● Principales utilisations des branches– Développement d'une nouvelle fonctionnalité

– Correctif à une version antérieure

Page 57: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

57

Développer une fonctionnalité avec les branches : démarche générale

● Créer une nouvelle branche● Basculer sur la branche créée● Développer sa fonctionnalité

(Régulièrement, intégrer les modifications éventuellement apportées dans la branche de départ)

● Lorsque la fonctionnalité est terminée (développée, documentée, testée)

– Réintégrer la fonctionnalité dans la branche de départ

– Supprimer la branche utilisée

Page 58: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

58

Git et les branches● Nom de la branche principale : master● Connaître la liste des branches

– git branch● Créer une branche (sans aller dedans)

– git branch nomBranche● Aller sur une branche donnée

– git checkout nomBranche● Créer une branche et aller dedans

– git checkout -b nomBranche● Supprimer une branche

– git branch -d nomBranche● Intégrer dans la branche courante le contenu d'une autre branche

– git merge nomBranche

Page 59: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

59

Travail avec les branchesExemple (1) : situation de départ

● git branch

● git log --decorate --oneline

* master

4712b0f (HEAD, master) au revoir9da7eb1 (tag: v1.0, tag: debut) ajout du fichier .gitignore pour ignorer les fichiers .class18ef331 message plus longfd577c3 Création du Hello standard

Page 60: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

60

Travail avec les branchesExemple (2) : créer une fonctionnalité

● git branch ''addition'' ; git branch

● git log --decorate --oneline

● git checkout addition ; git branch

addition* master

4712b0f (HEAD, master, addition) au revoir9da7eb1 (tag: v1.0, tag: debut) ajout du fichier .gitignore pour ignorer les fichiers .class18ef331 message plus longfd577c3 Création du Hello standard

* additionmaster

Page 61: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

61

Travail avec les branchesExemple (3) : créer une fonctionnalité

● emacs Operation.java ; emacs Hello.java● javac Hello.java ; git status

● git add . ; git commit -m ''addition, premier essai''

Sur la branche additionModifications qui ne seront pas validées : (utilisez "git add <fichier>..." pour mettre à jour ce qui sera validé) (utilisez "git checkout -- <fichier>..." pour annuler les modifications dans la copie de travail)

modifié: Hello.java

Fichiers non suivis: (utilisez "git add <fichier>..." pour inclure dans ce qui sera validé)

Operation.java

aucune modification n'a été ajoutée à la validation (utilisez "git add" ou "git commit -a")

Page 62: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

62

Travail avec les branchesExemple (4) : état de l'historique

● emacs Operation.java ; emacs Hello.java● git add . ; git commit● javac Hello.java● git log --decorate --oneline

45eaaa2 (HEAD, addition) addition, premier essai4712b0f (master) au revoir9da7eb1 (tag: v1.0, tag: debut) ajout du fichier .gitignore pour ignorer les fichiers .class18ef331 message plus longfd577c3 Création du Hello standard

Page 63: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

63

Travail avec les branchesExemple (5) : évolution du tronc

● git checkout master● git log --decorate --oneline --all

● emacs Hello.java ; git commit -a -m ''francisation''● git log --decorate --oneline --all --graph

* 0e08bc5 (HEAD, master) francisation| * 45eaaa2 (addition) addition, premier essai|/* 4712b0f au revoir* 9da7eb1 (tag: v1.0, tag: debut) ajout du fichier .gitignore pour ignorer les fichiers .class* 18ef331 message plus long* fd577c3 Création du Hello standard

45eaaa2 (HEAD, addition) addition, premier essai4712b0f (master) au revoir9da7eb1 (tag: v1.0, tag: debut) ajout du fichier .gitignore pour ignorer les fichiers .class18ef331 message plus longfd577c3 Création du Hello standard

Page 64: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

64

Travail avec les branchesExemple (6) : reprise du travail dans la branche

● git checkout addition● git log --decorate --oneline --all –graph

● emacs Operation.java ; emacs Hello.java● javac Hello.java● git commit -a -m ''passage par une méthode d'instance''

* 0e08bc5 (master) francisation| * 45eaaa2 (HEAD, addition) addition, premier essai|/* 4712b0f au revoir* 9da7eb1 (tag: v1.0, tag: debut) ajout du fichier .gitignore pour ignorer les fichiers .class* 18ef331 message plus long* fd577c3 Création du Hello standard

Page 65: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

65

Travail avec les branchesExemple (7) : état des lieux

● git log --decorate --oneline --all --graph* ca919a2 (HEAD, addition) passage par une méthode d'instance* 45eaaa2 addition, premier essai| * 0e08bc5 (master) francisation|/* 4712b0f au revoir* 9da7eb1 (tag: v1.0, tag: debut) ajout du fichier .gitignore pour ignorer les fichiers .class* 18ef331 message plus long* fd577c3 Création du Hello standard

Page 66: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

66

Travail avec les branchesExemple (8) : synchro avec le tronc

● git merge master

● cat Hello.javapublic class Hello { public static void main(String... args) {<<<<<<< HEAD

System.out.print("Hello World");Operation op = new Operation(2,3);System.out.println("2+3="+op.addition());System.out.print("Au revoir");

=======System.out.println("Bonjour");System.out.println("Au revoir");

>>>>>>> master }}

Fusion automatique de Hello.javaCONFLIT (contenu) : Conflit de fusion dans Hello.javaLa fusion automatique a échoué ; réglez les conflits et validez le résultat.

Page 67: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

67

Travail avec les branchesExemple (8) : synchro avec le tronc

● git merge master

● cat Hello.javapublic class Hello { public static void main(String... args) {<<<<<<< HEAD

System.out.print("Hello World");Operation op = new Operation(2,3);System.out.println("2+3="+op.addition());System.out.print("Au revoir");

=======System.out.println("Bonjour");System.out.println("Au revoir");

>>>>>>> master }}

Fusion automatique de Hello.javaCONFLIT (contenu) : Conflit de fusion dans Hello.javaLa fusion automatique a échoué ; réglez les conflits et validez le résultat.

Page 68: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

68

Travail avec les branchesExemple (8) : synchro avec le tronc

● git merge master

● cat Hello.javapublic class Hello { public static void main(String... args) {<<<<<<< HEAD

System.out.print("Hello World");Operation op = new Operation(2,3);System.out.println("2+3="+op.addition());System.out.print("Au revoir");

=======System.out.println("Bonjour");System.out.println("Au revoir");

>>>>>>> master }}

Fusion automatique de Hello.javaCONFLIT (contenu) : Conflit de fusion dans Hello.javaLa fusion automatique a échoué ; réglez les conflits et validez le résultat.

Page 69: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

69

Travail avec les branchesExemple (8) : synchro avec le tronc

● git merge master

● cat Hello.javapublic class Hello { public static void main(String... args) {<<<<<<< HEAD

System.out.print("Hello World");Operation op = new Operation(2,3);System.out.println("2+3="+op.addition());System.out.print("Au revoir");

=======System.out.println("Bonjour");System.out.println("Au revoir");

>>>>>>> master }}

Fusion automatique de Hello.javaCONFLIT (contenu) : Conflit de fusion dans Hello.javaLa fusion automatique a échoué ; réglez les conflits et validez le résultat.

Page 70: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

70

Travail avec les branchesExemple (8) : résolution du conflit

● emacs Hello.java ; cat Hello.java

● git commit -a -m ''intégration des modifs du tronc''

public class Hello { public static void main(String... args) {

System.out.println("Bonjour");Operation op = new Operation(2,3);System.out.println("2+3="+op.addition());System.out.println("Au revoir");

}}

* ddb2758 (HEAD, addition) intégration des modifs du tronc|\ | * 0e08bc5 (master) francisation* | ca919a2 passage par une méthode d'instance* | 45eaaa2 addition, premier essai|/ * 4712b0f au revoir* 9da7eb1 (tag: v1.0, tag: debut) ajout du fichier .gitignore pour ignorer les fichiers .class* 18ef331 message plus long* fd577c3 Création du Hello standard

Page 71: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

71

Résolution de conflitUtilisation d'outils externes (1)

● Principe Lorsqu'un conflit est détecté, git mergetool permet d'utiliser un

outil externe pour aider à la résolution du conflit● Mise en œuvre avec Meld

– sudo apt-get install meld– git config --global merge.tool meld– Après un « git merge » indiquant un conflit, lancer

git mergetool

Merging:Hello.java

Normal merge conflict for 'Hello.java': {local}: modified file {remote}: modified fileHit return to start merge resolution tool (meld):

Page 72: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

72

Résolution de conflitUtilisation d'outils externes (2)

Page 73: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

73

Résolution de conflitUtilisation d'outils externes (3)

● Définition de points de synchronisation

Page 74: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

74

Résolution de conflitUtilisation d'outils externes (3)

● Après clic /Shift-clic/Ctrl-clic sur les bonnes flèches

Page 75: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

75

Résolution de conflitUtilisation d'outils externes (4)

● Après sauvegarde, git status

● rm Hello.java.orig● git commit

Tous les conflits sont réglés mais la fusion n'est pas terminée. (utilisez "git commit" pour terminer la fusion)

Modifications qui seront validées :

modifié: Hello.java

Fichiers non suivis: (utilisez "git add <fichier>..." pour inclure dans ce qui sera validé)

Hello.java.orig

Page 76: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

76

Travail avec les branchesExemple (9) : fin du dvlpt de la fonc.

● emacs Hello.java● git commit -a -m ''finalisation addition''● git log --decorate --oneline --all --graph* ed75c55 (HEAD, addition) finalisation addition* ddb2758 intégration des modifs du tronc|\ | * 0e08bc5 (master) francisation* | ca919a2 passage par une méthode d'instance* | 45eaaa2 addition, premier essai|/ * 4712b0f au revoir* 9da7eb1 (tag: v1.0, tag: debut) ajout du fichier .gitignore pour ignorer les fichiers .class* 18ef331 message plus long* fd577c3 Création du Hello standard

Page 77: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

77

Travail avec les branchesExemple (10) : retour sur le tronc

● ls

● git checkout master● ls

● git log --decorate --oneline --all --graph* ed75c55 (addition) finalisation addition* ddb2758 intégration des modifs du tronc|\ | * 0e08bc5 (HEAD, master) francisation* | ca919a2 passage par une méthode d'instance* | 45eaaa2 addition, premier essai|/ * 4712b0f au revoir* 9da7eb1 (tag: v1.0, tag: debut) ajout du fichier .gitignore pour ignorer les fichiers .class* 18ef331 message plus long* fd577c3 Création du Hello standard

Hello.class Hello.java Operation.class Operation.java

Hello.class Hello.java Operation.class

Page 78: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

78

Travail avec les branchesExemple (11) : intégration de la fonc.

● Git merge addition

● git log --decorate --oneline --all --graph* ed75c55 (HEAD, master, addition) finalisation addition* ddb2758 intégration des modifs du tronc|\ | * 0e08bc5 francisation* | ca919a2 passage par une méthode d'instance* | 45eaaa2 addition, premier essai|/ * 4712b0f au revoir* 9da7eb1 (tag: v1.0, tag: debut) ajout du fichier .gitignore pour ignorer les fichiers .class* 18ef331 message plus long* fd577c3 Création du Hello standard

Mise à jour 0e08bc5..ed75c55Fast-forward Hello.java | 4 ++++ Operation.java | 12 ++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 Operation.java

Page 79: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

79

Travail avec les branchesExemple (12) : suppression branche

● git branch -d addition● git branch -a

● git tag -a ''v1.1''● git log --decorate --oneline --all --graph* ed75c55 (HEAD, tag: v1.1, master) finalisation addition* ddb2758 intégration des modifs du tronc|\ | * 0e08bc5 francisation* | ca919a2 passage par une méthode d'instance* | 45eaaa2 addition, premier essai|/ * 4712b0f au revoir* 9da7eb1 (tag: v1.0, tag: debut) ajout du fichier .gitignore pour ignorer les fichiers .class* 18ef331 message plus long* fd577c3 Création du Hello standard

* master

Page 80: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

80

gestion des révisions par GITUne affaire de pointeurs

master branche Bétiquette a

branche Aétiquette b

1 2 3

4 6

7

9

10

8 11 13

1412

5

head

Page 81: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

81

Gestion des révisions par GITPoint de vue depuis « master » (1/6)

master branche B

étiquette a

branche A

étiquette b

1 2 3

4 6

7

9

10

8 11 13

1412

5

head

Page 82: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

82

Gestion des révisions par GITPoint de vue depuis « master » (2/6)

master branche B

étiquette a

branche A

étiquette b

1 2 3

4 6

7

9

10

8 11

1412

5

head

Page 83: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

83

Gestion des révisions par GITPoint de vue depuis « master » (3/6)

master branche B

étiquette a

branche A

étiquette b

1 2 3

4 6

7

9

10

8 11

1412

5

head

Page 84: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

84

Gestion des révisions par GITPoint de vue depuis « master » (4/6)

master branche B

étiquette a

branche A

étiquette b

1 2 3

4 6

7

9

10

8

1412

5

head

Page 85: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

85

Gestion des révisions par GITPoint de vue depuis « master » (5/6)

master branche B

étiquette a

branche A

étiquette b

1 2 3

4 6

7 10

8

1412

5

head

Page 86: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

86

Gestion des révisions par GITPoint de vue depuis « master » (6/6)

master branche B

étiquette a

branche A

étiquette b

1 2 3

4 6

7 10

8

1412

head

Page 87: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

87

gestion des révisions par GITNouveau commit sur la branche A (1/2)

master branche Bétiquette a

branche Aétiquette b

1 2 3

4 6

7

9

10

8 11 13

1412

5

head

Page 88: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

88

gestion des révisions par GITNouveau commit sur la branche A (2/2)

master branche Bétiquette a

branche Aétiquette b

1 2 3

4 6

7

9

10

8 11 13

1412

5

15

head

Page 89: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

89

gestion des révisions par GITSuppression de la branche B (1/3)

master branche Bétiquette a

branche Aétiquette b

1 2 3

4 6

7

9

10

8 11 13

1412

5

head

Page 90: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

90

gestion des révisions par GITSuppression de la branche B (2/3)

masterétiquette a

branche Aétiquette b

1 2 3

4 6

7

9

10

8 11 13

1412

5

head

Page 91: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

91

gestion des révisions par GITSuppression de la branche B (3/3)

masterétiquette a

branche Aétiquette b

1 2 3

4 6

7

9

10

8 11 13

1412

5

head

Page 92: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

92

gestion des révisions par GITRévisions inaccessibles (1/3)

masterétiquette a

branche Aétiquette b

1 2 3

4 6

7

9

10

8 11 13

1412

5

head

Page 93: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

93

gestion des révisions par GITRévisions inaccessibles (2/3)

masterétiquette a

branche Aétiquette b

1 2 3

4 6

7

9

10

8 11 13

1412

5

head

Page 94: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

94

gestion des révisions par GITRévisions inaccessibles (3/3)

masterétiquette a

branche Aétiquette b

1 2 3

4 6

7

9

10

8 11 13

1412

5

head

Les révisions 5, 11 et 13 sont inaccessiblesOn peut cependant les retrouver avec un :git log ­­reflog

Page 95: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

95

gestion des révisions par GITRécupération d'une version spécifique

master branche Bétiquette a

branche Aétiquette b

1 2 3

4 6

7

9

10

8 11 13

1412

5

head

git checkout ''étiquette a'' ou git checkout 2

Page 96: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

96

gestion des révisions par GITRécupération d'une version spécifique

master branche Bétiquette a

branche Aétiquette b

1 2 3

4 6

7

9

10

8 11 13

1412

5

head

git checkout ''étiquette a'' ou git checkout 2

Page 97: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

97

gestion des révisions par GITRécupération d'une version spécifique

master branche Bétiquette a

branche Aétiquette b

1 2 3

4 6

7

9

10

8 11 13

1412

5

head

git checkout ''étiquette a'' ou git checkout 2

Le Pointeur « head » ne pointe plus sur une brancheOn parle de « detached head »On peut créer une branche, sur laquelle head pointera, avec un :    git checkout –b nouvelleBrancheOn peut aussi faire directement un    git checkout 2 –b nouvelleBrancheOu un    git checkout étiquetteA –b nouvelleBranche

Page 98: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

98

Principe de la fusion de branche1. Plus jeune ancêtre commun (1/3)

master branche Bétiquette a

branche Aétiquette b

1 2 3

4 6

7

9

10

8 11 13

1412

5

head

git checkout master ; git merge brancheB

Page 99: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

99

Principe de la fusion de branche1. Plus jeune ancêtre commun (2/3)

master branche B

1 2 3

4 6

7 10

8 11 13

1412

head

git checkout master ; git merge brancheB

Page 100: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

100

Principe de la fusion de branche1. Plus jeune ancêtre commun (3/3)

master branche B

3

13

14

head

git checkout master ; git merge brancheB

Page 101: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

101

Principe de la fusion de branche2. Recherche des différences dans le code

ligne 1ligne 2ligne 3ligne 4ligne 5ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ligne 12

ligne 1ajout a1ligne 2ligne 3ligne 4ligne 5ajout a2ligne 6ligne 7

ligne 9ligne 10

ligne 12

ligne 1ligne 2ligne 3ligne 5ajout a3ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ajout a4ligne 12

Ancêtre commun Dernier master Dernier brancheB Fusion

Page 102: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

102

Principe de la fusion de branche2. Recherche des différences dans le code

ligne 1ligne 2ligne 3ligne 4ligne 5ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ligne 12

ligne 1ajout a1ligne 2ligne 3ligne 4ligne 5ajout a2ligne 6ligne 7

ligne 9ligne 10

ligne 12

ligne 1ligne 2ligne 3ligne 5ajout a3ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ajout a4ligne 12

Ancêtre commun Dernier master Dernier brancheB Fusion

Page 103: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

103

Principe de la fusion de branche2. Recherche des différences dans le code

ligne 1ligne 2ligne 3ligne 4ligne 5ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ligne 12

ligne 1ajout a1ligne 2ligne 3ligne 4ligne 5ajout a2ligne 6ligne 7

ligne 9ligne 10

ligne 12

ligne 1ligne 2ligne 3ligne 5ajout a3ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ajout a4ligne 12

Ancêtre commun Dernier master Dernier brancheB Fusion

ligne 1

Page 104: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

104

Principe de la fusion de branche2. Recherche des différences dans le code

ligne 1ligne 2ligne 3ligne 4ligne 5ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ligne 12

ligne 1ajout a1ligne 2ligne 3ligne 4ligne 5ajout a2ligne 6ligne 7

ligne 9ligne 10

ligne 12

ligne 1ligne 2ligne 3ligne 5ajout a3ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ajout a4ligne 12

Ancêtre commun Dernier master Dernier brancheB Fusion

ligne 1

Page 105: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

105

Principe de la fusion de branche2. Recherche des différences dans le code

ligne 1ligne 2ligne 3ligne 4ligne 5ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ligne 12

ligne 1ajout a1ligne 2ligne 3ligne 4ligne 5ajout a2ligne 6ligne 7

ligne 9ligne 10

ligne 12

ligne 1ligne 2ligne 3ligne 5ajout a3ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ajout a4ligne 12

Ancêtre commun Dernier master Dernier brancheB Fusion

ligne 1ajout a1

Page 106: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

106

Principe de la fusion de branche2. Recherche des différences dans le code

ligne 1ligne 2ligne 3ligne 4ligne 5ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ligne 12

ligne 1ajout a1ligne 2ligne 3ligne 4ligne 5ajout a2ligne 6ligne 7

ligne 9ligne 10

ligne 12

ligne 1ligne 2ligne 3ligne 5ajout a3ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ajout a4ligne 12

Ancêtre commun Dernier master Dernier brancheB Fusion

ligne 1ajout a1

Page 107: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

107

Principe de la fusion de branche2. Recherche des différences dans le code

ligne 1ligne 2ligne 3ligne 4ligne 5ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ligne 12

ligne 1ajout a1ligne 2ligne 3ligne 4ligne 5ajout a2ligne 6ligne 7

ligne 9ligne 10

ligne 12

ligne 1ligne 2ligne 3ligne 5ajout a3ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ajout a4ligne 12

Ancêtre commun Dernier master Dernier brancheB Fusion

ligne 1ajout a1ligne 2ligne 3

Page 108: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

108

Principe de la fusion de branche2. Recherche des différences dans le code

ligne 1ligne 2ligne 3ligne 4ligne 5ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ligne 12

ligne 1ajout a1ligne 2ligne 3ligne 4ligne 5ajout a2ligne 6ligne 7

ligne 9ligne 10

ligne 12

ligne 1ligne 2ligne 3ligne 5ajout a3ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ajout a4ligne 12

Ancêtre commun Dernier master Dernier brancheB Fusion

ligne 1ajout a1ligne 2ligne 3

Page 109: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

109

Principe de la fusion de branche2. Recherche des différences dans le code

ligne 1ligne 2ligne 3ligne 4ligne 5ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ligne 12

ligne 1ajout a1ligne 2ligne 3ligne 4ligne 5ajout a2ligne 6ligne 7

ligne 9ligne 10

ligne 12

ligne 1ligne 2ligne 3ligne 5ajout a3ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ajout a4ligne 12

Ancêtre commun Dernier master Dernier brancheB Fusion

ligne 1ajout a1ligne 2ligne 3

Page 110: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

110

Principe de la fusion de branche2. Recherche des différences dans le code

ligne 1ligne 2ligne 3ligne 4ligne 5ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ligne 12

ligne 1ajout a1ligne 2ligne 3ligne 4ligne 5ajout a2ligne 6ligne 7

ligne 9ligne 10

ligne 12

ligne 1ligne 2ligne 3ligne 5ajout a3ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ajout a4ligne 12

Ancêtre commun Dernier master Dernier brancheB Fusion

ligne 1ajout a1ligne 2ligne 3

Page 111: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

111

Principe de la fusion de branche2. Recherche des différences dans le code

ligne 1ligne 2ligne 3ligne 4ligne 5ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ligne 12

ligne 1ajout a1ligne 2ligne 3ligne 4ligne 5ajout a2ligne 6ligne 7

ligne 9ligne 10

ligne 12

ligne 1ligne 2ligne 3ligne 5ajout a3ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ajout a4ligne 12

Ancêtre commun Dernier master Dernier brancheB Fusion

ligne 1ajout a1ligne 2ligne 3

ligne 5

Page 112: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

112

Principe de la fusion de branche2. Recherche des différences dans le code

ligne 1ligne 2ligne 3ligne 4ligne 5ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ligne 12

ligne 1ajout a1ligne 2ligne 3ligne 4ligne 5ajout a2ligne 6ligne 7

ligne 9ligne 10

ligne 12

ligne 1ligne 2ligne 3ligne 5ajout a3ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ajout a4ligne 12

Ancêtre commun Dernier master Dernier brancheB Fusion

ligne 1ajout a1ligne 2ligne 3

ligne 5

Page 113: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

113

Principe de la fusion de branche2. Recherche des différences dans le code

ligne 1ligne 2ligne 3ligne 4ligne 5ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ligne 12

ligne 1ajout a1ligne 2ligne 3ligne 4ligne 5ajout a2ligne 6ligne 7

ligne 9ligne 10

ligne 12

ligne 1ligne 2ligne 3ligne 5ajout a3ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ajout a4ligne 12

Ancêtre commun Dernier master Dernier brancheB Fusion

ligne 1ajout a1ligne 2ligne 3

ligne 5

Page 114: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

114

Principe de la fusion de branche2. Recherche des différences dans le code

ligne 1ligne 2ligne 3ligne 4ligne 5ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ligne 12

ligne 1ajout a1ligne 2ligne 3ligne 4ligne 5ajout a2ligne 6ligne 7

ligne 9ligne 10

ligne 12

ligne 1ligne 2ligne 3ligne 5ajout a3ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ajout a4ligne 12

Ancêtre commun Dernier master Dernier brancheB Fusion

ligne 1ajout a1ligne 2ligne 3

ligne 5??????

Page 115: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

115

Principe de la fusion de branche2. Recherche des différences dans le code

ligne 1ligne 2ligne 3ligne 4ligne 5ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ligne 12

ligne 1ajout a1ligne 2ligne 3ligne 4ligne 5ajout a2ligne 6ligne 7

ligne 9ligne 10

ligne 12

ligne 1ligne 2ligne 3ligne 5ajout a3ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ajout a4ligne 12

Ancêtre commun Dernier master Dernier brancheB Fusion

ligne 1ajout a1ligne 2ligne 3

ligne 5??????

Page 116: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

116

Principe de la fusion de branche2. Recherche des différences dans le code

ligne 1ligne 2ligne 3ligne 4ligne 5ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ligne 12

ligne 1ajout a1ligne 2ligne 3ligne 4ligne 5ajout a2ligne 6ligne 7

ligne 9ligne 10

ligne 12

ligne 1ligne 2ligne 3ligne 5ajout a3ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ajout a4ligne 12

Ancêtre commun Dernier master Dernier brancheB Fusion

ligne 1ajout a1ligne 2ligne 3

ligne 5??????ligne 6ligne 7

Page 117: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

117

Principe de la fusion de branche2. Recherche des différences dans le code

ligne 1ligne 2ligne 3ligne 4ligne 5ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ligne 12

ligne 1ajout a1ligne 2ligne 3ligne 4ligne 5ajout a2ligne 6ligne 7

ligne 9ligne 10

ligne 12

ligne 1ligne 2ligne 3ligne 5ajout a3ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ajout a4ligne 12

Ancêtre commun Dernier master Dernier brancheB Fusion

ligne 1ajout a1ligne 2ligne 3

ligne 5??????ligne 6ligne 7

Page 118: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

118

Principe de la fusion de branche2. Recherche des différences dans le code

ligne 1ligne 2ligne 3ligne 4ligne 5ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ligne 12

ligne 1ajout a1ligne 2ligne 3ligne 4ligne 5ajout a2ligne 6ligne 7

ligne 9ligne 10

ligne 12

ligne 1ligne 2ligne 3ligne 5ajout a3ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ajout a4ligne 12

Ancêtre commun Dernier master Dernier brancheB Fusion

ligne 1ajout a1ligne 2ligne 3

ligne 5??????ligne 6ligne 7

Page 119: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

119

Principe de la fusion de branche2. Recherche des différences dans le code

ligne 1ligne 2ligne 3ligne 4ligne 5ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ligne 12

ligne 1ajout a1ligne 2ligne 3ligne 4ligne 5ajout a2ligne 6ligne 7

ligne 9ligne 10

ligne 12

ligne 1ligne 2ligne 3ligne 5ajout a3ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ajout a4ligne 12

Ancêtre commun Dernier master Dernier brancheB Fusion

ligne 1ajout a1ligne 2ligne 3

ligne 5??????ligne 6ligne 7

Page 120: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

120

Principe de la fusion de branche2. Recherche des différences dans le code

ligne 1ligne 2ligne 3ligne 4ligne 5ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ligne 12

ligne 1ajout a1ligne 2ligne 3ligne 4ligne 5ajout a2ligne 6ligne 7

ligne 9ligne 10

ligne 12

ligne 1ligne 2ligne 3ligne 5ajout a3ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ajout a4ligne 12

Ancêtre commun Dernier master Dernier brancheB Fusion

ligne 1ajout a1ligne 2ligne 3

ligne 5??????ligne 6ligne 7

ligne 9ligne 10

Page 121: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

121

Principe de la fusion de branche2. Recherche des différences dans le code

ligne 1ligne 2ligne 3ligne 4ligne 5ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ligne 12

ligne 1ajout a1ligne 2ligne 3ligne 4ligne 5ajout a2ligne 6ligne 7

ligne 9ligne 10

ligne 12

ligne 1ligne 2ligne 3ligne 5ajout a3ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ajout a4ligne 12

Ancêtre commun Dernier master Dernier brancheB Fusion

ligne 1ajout a1ligne 2ligne 3

ligne 5??????ligne 6ligne 7

ligne 9ligne 10

Page 122: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

122

Principe de la fusion de branche2. Recherche des différences dans le code

ligne 1ligne 2ligne 3ligne 4ligne 5ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ligne 12

ligne 1ajout a1ligne 2ligne 3ligne 4ligne 5ajout a2ligne 6ligne 7

ligne 9ligne 10

ligne 12

ligne 1ligne 2ligne 3ligne 5ajout a3ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ajout a4ligne 12

Ancêtre commun Dernier master Dernier brancheB Fusion

ligne 1ajout a1ligne 2ligne 3

ligne 5??????ligne 6ligne 7

ligne 9ligne 10

Page 123: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

123

Principe de la fusion de branche2. Recherche des différences dans le code

ligne 1ligne 2ligne 3ligne 4ligne 5ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ligne 12

ligne 1ajout a1ligne 2ligne 3ligne 4ligne 5ajout a2ligne 6ligne 7

ligne 9ligne 10

ligne 12

ligne 1ligne 2ligne 3ligne 5ajout a3ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ajout a4ligne 12

Ancêtre commun Dernier master Dernier brancheB Fusion

ligne 1ajout a1ligne 2ligne 3

ligne 5??????ligne 6ligne 7

ligne 9ligne 10??????

Page 124: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

124

Principe de la fusion de branche2. Recherche des différences dans le code

ligne 1ligne 2ligne 3ligne 4ligne 5ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ligne 12

ligne 1ajout a1ligne 2ligne 3ligne 4ligne 5ajout a2ligne 6ligne 7

ligne 9ligne 10

ligne 12

ligne 1ligne 2ligne 3ligne 5ajout a3ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ajout a4ligne 12

Ancêtre commun Dernier master Dernier brancheB Fusion

ligne 1ajout a1ligne 2ligne 3

ligne 5??????ligne 6ligne 7

ligne 9ligne 10??????

Page 125: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

125

Principe de la fusion de branche2. Recherche des différences dans le code

ligne 1ligne 2ligne 3ligne 4ligne 5ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ligne 12

ligne 1ajout a1ligne 2ligne 3ligne 4ligne 5ajout a2ligne 6ligne 7

ligne 9ligne 10

ligne 12

ligne 1ligne 2ligne 3ligne 5ajout a3ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ajout a4ligne 12

Ancêtre commun Dernier master Dernier brancheB Fusion

ligne 1ajout a1ligne 2ligne 3

ligne 5??????ligne 6ligne 7

ligne 9ligne 10??????

ligne 12

Page 126: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

126

Principe de la fusion de branche2. Recherche des différences dans le code

ligne 1ligne 2ligne 3ligne 4ligne 5ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ligne 12

ligne 1ajout a1ligne 2ligne 3ligne 4ligne 5ajout a2ligne 6ligne 7

ligne 9ligne 10

ligne 12

ligne 1ligne 2ligne 3ligne 5ajout a3ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ajout a4ligne 12

Ancêtre commun Dernier master Dernier brancheB Fusion

ligne 1ajout a1ligne 2ligne 3

ligne 5??????ligne 6ligne 7

ligne 9ligne 10??????

ligne 12

Page 127: Gestion de version avec GIT - GREYC · Le développeur utilise sont dépôt local pour gérer les versions ... "git add" pour les suivre) [master (commit racine) fd577c3] Création

Bruno Mermet

127

Principe de la fusion de branche2. Recherche des différences dans le code

ligne 1ligne 2ligne 3ligne 4ligne 5ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ligne 12

ligne 1ajout a1ligne 2ligne 3ligne 4ligne 5ajout a2ligne 6ligne 7

ligne 9ligne 10

ligne 12

ligne 1ligne 2ligne 3ligne 5ajout a3ligne 6ligne 7ligne 8ligne 9ligne 10ligne 11ajout a4ligne 12

Ancêtre commun Dernier master Dernier brancheB Fusion

ligne 1ajout a1ligne 2ligne 3

ligne 5??????ligne 6ligne 7

ligne 9ligne 10??????

ligne 12

ligne 1ajout a1ligne 2ligne 3ligne 5

<<<<<<< HEADajout a2=======ajout a3>>>>>>> brancheB

ligne 6ligne 7ligne 9

ligne 10<<<<<<< HEAD=======ligne 11ajout a4>>>>>>> brancheB

ligne 12