tp gestion de versions avec git - projet-plume.org · concepts de base repositorytout...

41
TP Gestion de versions avec Git Matthieu Herrb http://homepages.laas.fr/matthieu/envol2010/tp-git/tp-git.pdf Envol 2010

Upload: trinhkhanh

Post on 10-Oct-2018

225 views

Category:

Documents


0 download

TRANSCRIPT

TP Gestion de versions avec Git

Matthieu Herrb

httphomepageslaasfrmatthieuenvol2010tp-gittp-gitpdf

Envol 2010

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Introduction

Systeme de gestion de version distribue

par opposition a CVS ou subversion qui sont centralises

Developpe par Linus Torvalds pour le noyau Linux

Similaire a Monotone Darcs Mercurial Bazaar etc

Interfaces de git

Ligne de commande

Diverses GUI pour git (gitk qgit giggles etc)

Plugin Eclipse EGit

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Concepts de base

repository tout lrsquohistorique du projetcontenu dans le repertoire git

diff ou patch differences entre 2 versions drsquoun fichier

commit (verbe) action drsquoenregistrer les version drsquoun ensemblede fichiersdans le repository

commit (nom) le resultat drsquoune action de commit representepar un hash SHA-1

branche une lignee de developpementpar defaut tout le developpement se fait dans labranche master

tag un identificateur symbolique pour un commit ou unebranche

Concepts de base (2)

Working tree Lrsquoarborscence de fichiers en cours drsquoedition

Index un objet traquant les fichiers modifies ajoutes ousupprimes

Blob donnees binaires utilisees pour stocker les fichierscommits et autres donnees

Configuration initiale

Definir les valeurs par defaut pour les commits

Nom drsquoutilisateur amp adresse mail

Editeur de textes prefere

git config --global --add username Matthieu Herrb

git config --global --add useremail

ltmatthieuherrblaasfrgt

git config --global --add coreeditor emacs -nw

cat ~gitconfig

[user]

name = Matthieu Herrb

email = ltmatthieuherrblaasfrgt

[core]

editor = emacs -nw

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Creer un repository

git init cree un repository vide dans le repertoire courant

mkdir git-tutorial

cd git-tutorial

git init

Initialized empty Git repository in homemhgit-tuturialgit

ls -l git

total 24

-rw-r--r-- 1 mh mh 23 Oct 26 0914 HEAD

-rw-r--r-- 1 mh mh 111 Oct 26 0914 config

-rw-r--r-- 1 mh mh 58 Oct 26 0914 description

drwxr-xr-x 12 mh mh 408 Oct 26 0914 hooks

drwxr-xr-x 3 mh mh 102 Oct 26 0914 info

drwxr-xr-x 4 mh mh 136 Oct 26 0914 objects

drwxr-xr-x 4 mh mh 136 Oct 26 0914 refs

Ajout de fichiers

git add ajoute des fichiers nouveaux ou recemment modifies alrsquoindex

echo Hello World gt filetxt

git add

Consulter lrsquoetat

Affichier la branche courante et lrsquoetat de lrsquoindex

git status

On branch master

Initial commit

Changes to be committed

(use git rm --cached ltfilegt to unstage)

new file filetxt

Committer les modifications

git commit

Created initial commit 0ba7bd8 Initial version

1 files changed 1 insertions(+) 0 deletions(-)

create mode 100644 filetxt

echo Hello Matthieu gt filetxt

git commit -a

Created commit 7fbf4cb Modif

1 files changed 1 insertions(+) 1 deletions(-)

Ouvre lrsquoediteur de textes pour entrer un message de commitpuis enregistre les modifications dans le repository

Regarder en arriere

Plusieurs facons drsquoexaminer lrsquohistorique des modifications

git log

commit 7fbf4cb7c8977061fbfb609016f5414e833a3a1c

Author Matthieu Herrb ltmatthieuherrblaasfrgt

Date Tue Oct 28 122933 2008 +0100

Modif

commit 0ba7bd8b93ef9ddd8917814bde8cbdaaf9732559

Author Matthieu Herrb ltmatthieuherrblaasfrgt

Date Tue Oct 28 122838 2008 +0100

Initial version

git log --stat

git log -p

Examiner les modifications

Affiche les modifications entre le working set et lrsquoindexou entre lrsquoindex et le repository

echo Good bye gt filetxt

git diff

diff --git afiletxt bfiletxt

index 6bd8f3cc0ee9ab 100644

--- afiletxt

+++ bfiletxt

-1 +1

-Hello Matthieu

+Good bye

git add filetxt

git diff --cached

Marquer une version

Creer un objet de type tag contenant un nom et un commentaireOuvre lrsquoediteur de texte pour saisir le commentaire

git tag -a git-tuto-10

git tag -l

git-tuto-10

Corriger les erreurs revenir a une version saine

Restaurer le working set a partir de la derniere version commiteedetruisant toutes les modifications locales

git reset --hard

Inverser un commit donne

git revert 03bace

Finished one revert

Created commit c333ab5 Revert 3rd version

1 files changed 1 insertions(+) 1 deletions(-)

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Changer de branche

Creer une nouvelle branche

git checkout -b newbranch

Retourner a la branche master

git checkout master

Lister les branches existantes

git branch

master

newbranch

Fusionner les modifications drsquoune autre branche

git merge branch

Fusionne les commits de la branche branch et commite leresultat

2 types de fusion

fast forward pas de conflits seulement des nouveaux commitsa ajouter a la version courante

fusion normale presence de modifications locales utilise unalgorithme de fusion a 3 voies

Gestion des conflits

Un conflit se produit lorsque les modifications a fusionner sontincompatibles avec les modifications locales de la branche cible

Les fichiers avec des conflits contiennent des marqueurs deconflit

Ils ne sont pas automatiquement ajoutes a lrsquoindex

Resoudre le conflict

Ajouter les fichiers a lrsquoindex

Committer le resultat

Outils pour aider a la fusion

Git peut utiliser des outils tiers pour aider a resoudre les conflitskdiff3 tkdiff meld xxdiff opendiff

git config --global mergetool meld

git mergetool

Selectionner des modifications individuelles

Prendre un commit dans une autre branche (une correction de bug)et lrsquoappliquer a la branche courante

git cherry-pick SHA1_HASH

Rebase - rejouer les commits drsquoune branche

Les fusions creent des commits fantomes sous forme de liensdans le graphe des versionsLorsqursquoune branche nrsquoa que quelques commits locaux rebase estpreferable

git rebase master

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Copier un repository

git clone repo

repo un URL du repository a copier Peut etre

un chemin vers un repertoire sur la meme machine

ssh[user]hostpath - utilise GIT dans SSH

githostpath - acces anonyme avec le protocole GIT

httphostpath - acces anonyme avec le protocole HTTP

exercice

repository dinnersshenvol2010traclaasfrgitenvol2010dinner

clonez le repository

creez votre branche personnelle

modifiez le code

utilisez les fichiers de compilation du TP automakearrangez le stylecorrigez des defauts dans le code

commitez vos modifs au fur et a mesure

synchronizez avec le repository central

visualisez les modifs faites par drsquoautres

fusionnez les modifs de plusieurs personnes pour faire unemeilleure version

Mise a jour depuis un repository

git pull

recupere les branches distantes dans le repository local

fusionne la branch distante par defaut dans la branchecouranteet commite le resultat

peut produire un conflit

Resoudre le conflitCommitter le resultat

Branches distantes

git branch -r

liste les branches distantes (originbranch)

Une branche distante peut etre suivie (fusionnee dans les 2 sens)avec

git checkout -t -b newbranch origingnewbranch

Utilisation de rebase avec les branches distantes

fecth recupere les commits distants sans les fusionner

git fetch

git rebase originmaster

Raccourci

git fetch

git rebase originmaster

Envoyer des commits vers un repository

git push

Transfere les commits locaux vers les branches distantes suiviesGenere une erreur si pas a jour (pull ou rebase drsquoabord)

Il faut transferer les tags separement

git push --tags

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Identifier les auteurs

git blame -- filetxt

Pour chaque ligne drsquoun fichier montre le dernier commit et sonauteur

Recherche par dissection drsquoun bug

git bissect permet de rechercher dans lrsquohistorique des commitslrsquoorigine drsquoun bug

git bisect start

git bisect bad la version courante est buguee

git bisect good v2633-rc2 derniere bonne version

Git determine le commit median et lrsquoextraitTester et executer selon le resultat

git bisect good

git bisect bad

A la fin reste le commit responsable du bug

Creer une distribution avec git

(Alternative a la fonction drsquoautomake make dist)

Committer toutes les modifications y compris le nouveau nomde la version

Tagger le resultat

Utiliser archive pour produire une archive qui sera ladistribution source

git tag -a foo-13

git archive --prefix=foo-13 foo-13

| gzip -c - gt foo-13targz

Outils graphiques

gitk

git gui

qgit

giggle

Web browsers cgit gitweb

Integration avec eclipse

Installation

ajouter httpdownloadeclipseorgegitupdatescomme site de telechargement(Preferences rarr InstallUpdates)

installer EGit et JGit (Help rarr Install new software)

Eclipse peut alors gerer lrsquohistorique du projet avec git

Documentationhttpwwweclipseorgegitdocumentation

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Introduction

Systeme de gestion de version distribue

par opposition a CVS ou subversion qui sont centralises

Developpe par Linus Torvalds pour le noyau Linux

Similaire a Monotone Darcs Mercurial Bazaar etc

Interfaces de git

Ligne de commande

Diverses GUI pour git (gitk qgit giggles etc)

Plugin Eclipse EGit

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Concepts de base

repository tout lrsquohistorique du projetcontenu dans le repertoire git

diff ou patch differences entre 2 versions drsquoun fichier

commit (verbe) action drsquoenregistrer les version drsquoun ensemblede fichiersdans le repository

commit (nom) le resultat drsquoune action de commit representepar un hash SHA-1

branche une lignee de developpementpar defaut tout le developpement se fait dans labranche master

tag un identificateur symbolique pour un commit ou unebranche

Concepts de base (2)

Working tree Lrsquoarborscence de fichiers en cours drsquoedition

Index un objet traquant les fichiers modifies ajoutes ousupprimes

Blob donnees binaires utilisees pour stocker les fichierscommits et autres donnees

Configuration initiale

Definir les valeurs par defaut pour les commits

Nom drsquoutilisateur amp adresse mail

Editeur de textes prefere

git config --global --add username Matthieu Herrb

git config --global --add useremail

ltmatthieuherrblaasfrgt

git config --global --add coreeditor emacs -nw

cat ~gitconfig

[user]

name = Matthieu Herrb

email = ltmatthieuherrblaasfrgt

[core]

editor = emacs -nw

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Creer un repository

git init cree un repository vide dans le repertoire courant

mkdir git-tutorial

cd git-tutorial

git init

Initialized empty Git repository in homemhgit-tuturialgit

ls -l git

total 24

-rw-r--r-- 1 mh mh 23 Oct 26 0914 HEAD

-rw-r--r-- 1 mh mh 111 Oct 26 0914 config

-rw-r--r-- 1 mh mh 58 Oct 26 0914 description

drwxr-xr-x 12 mh mh 408 Oct 26 0914 hooks

drwxr-xr-x 3 mh mh 102 Oct 26 0914 info

drwxr-xr-x 4 mh mh 136 Oct 26 0914 objects

drwxr-xr-x 4 mh mh 136 Oct 26 0914 refs

Ajout de fichiers

git add ajoute des fichiers nouveaux ou recemment modifies alrsquoindex

echo Hello World gt filetxt

git add

Consulter lrsquoetat

Affichier la branche courante et lrsquoetat de lrsquoindex

git status

On branch master

Initial commit

Changes to be committed

(use git rm --cached ltfilegt to unstage)

new file filetxt

Committer les modifications

git commit

Created initial commit 0ba7bd8 Initial version

1 files changed 1 insertions(+) 0 deletions(-)

create mode 100644 filetxt

echo Hello Matthieu gt filetxt

git commit -a

Created commit 7fbf4cb Modif

1 files changed 1 insertions(+) 1 deletions(-)

Ouvre lrsquoediteur de textes pour entrer un message de commitpuis enregistre les modifications dans le repository

Regarder en arriere

Plusieurs facons drsquoexaminer lrsquohistorique des modifications

git log

commit 7fbf4cb7c8977061fbfb609016f5414e833a3a1c

Author Matthieu Herrb ltmatthieuherrblaasfrgt

Date Tue Oct 28 122933 2008 +0100

Modif

commit 0ba7bd8b93ef9ddd8917814bde8cbdaaf9732559

Author Matthieu Herrb ltmatthieuherrblaasfrgt

Date Tue Oct 28 122838 2008 +0100

Initial version

git log --stat

git log -p

Examiner les modifications

Affiche les modifications entre le working set et lrsquoindexou entre lrsquoindex et le repository

echo Good bye gt filetxt

git diff

diff --git afiletxt bfiletxt

index 6bd8f3cc0ee9ab 100644

--- afiletxt

+++ bfiletxt

-1 +1

-Hello Matthieu

+Good bye

git add filetxt

git diff --cached

Marquer une version

Creer un objet de type tag contenant un nom et un commentaireOuvre lrsquoediteur de texte pour saisir le commentaire

git tag -a git-tuto-10

git tag -l

git-tuto-10

Corriger les erreurs revenir a une version saine

Restaurer le working set a partir de la derniere version commiteedetruisant toutes les modifications locales

git reset --hard

Inverser un commit donne

git revert 03bace

Finished one revert

Created commit c333ab5 Revert 3rd version

1 files changed 1 insertions(+) 1 deletions(-)

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Changer de branche

Creer une nouvelle branche

git checkout -b newbranch

Retourner a la branche master

git checkout master

Lister les branches existantes

git branch

master

newbranch

Fusionner les modifications drsquoune autre branche

git merge branch

Fusionne les commits de la branche branch et commite leresultat

2 types de fusion

fast forward pas de conflits seulement des nouveaux commitsa ajouter a la version courante

fusion normale presence de modifications locales utilise unalgorithme de fusion a 3 voies

Gestion des conflits

Un conflit se produit lorsque les modifications a fusionner sontincompatibles avec les modifications locales de la branche cible

Les fichiers avec des conflits contiennent des marqueurs deconflit

Ils ne sont pas automatiquement ajoutes a lrsquoindex

Resoudre le conflict

Ajouter les fichiers a lrsquoindex

Committer le resultat

Outils pour aider a la fusion

Git peut utiliser des outils tiers pour aider a resoudre les conflitskdiff3 tkdiff meld xxdiff opendiff

git config --global mergetool meld

git mergetool

Selectionner des modifications individuelles

Prendre un commit dans une autre branche (une correction de bug)et lrsquoappliquer a la branche courante

git cherry-pick SHA1_HASH

Rebase - rejouer les commits drsquoune branche

Les fusions creent des commits fantomes sous forme de liensdans le graphe des versionsLorsqursquoune branche nrsquoa que quelques commits locaux rebase estpreferable

git rebase master

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Copier un repository

git clone repo

repo un URL du repository a copier Peut etre

un chemin vers un repertoire sur la meme machine

ssh[user]hostpath - utilise GIT dans SSH

githostpath - acces anonyme avec le protocole GIT

httphostpath - acces anonyme avec le protocole HTTP

exercice

repository dinnersshenvol2010traclaasfrgitenvol2010dinner

clonez le repository

creez votre branche personnelle

modifiez le code

utilisez les fichiers de compilation du TP automakearrangez le stylecorrigez des defauts dans le code

commitez vos modifs au fur et a mesure

synchronizez avec le repository central

visualisez les modifs faites par drsquoautres

fusionnez les modifs de plusieurs personnes pour faire unemeilleure version

Mise a jour depuis un repository

git pull

recupere les branches distantes dans le repository local

fusionne la branch distante par defaut dans la branchecouranteet commite le resultat

peut produire un conflit

Resoudre le conflitCommitter le resultat

Branches distantes

git branch -r

liste les branches distantes (originbranch)

Une branche distante peut etre suivie (fusionnee dans les 2 sens)avec

git checkout -t -b newbranch origingnewbranch

Utilisation de rebase avec les branches distantes

fecth recupere les commits distants sans les fusionner

git fetch

git rebase originmaster

Raccourci

git fetch

git rebase originmaster

Envoyer des commits vers un repository

git push

Transfere les commits locaux vers les branches distantes suiviesGenere une erreur si pas a jour (pull ou rebase drsquoabord)

Il faut transferer les tags separement

git push --tags

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Identifier les auteurs

git blame -- filetxt

Pour chaque ligne drsquoun fichier montre le dernier commit et sonauteur

Recherche par dissection drsquoun bug

git bissect permet de rechercher dans lrsquohistorique des commitslrsquoorigine drsquoun bug

git bisect start

git bisect bad la version courante est buguee

git bisect good v2633-rc2 derniere bonne version

Git determine le commit median et lrsquoextraitTester et executer selon le resultat

git bisect good

git bisect bad

A la fin reste le commit responsable du bug

Creer une distribution avec git

(Alternative a la fonction drsquoautomake make dist)

Committer toutes les modifications y compris le nouveau nomde la version

Tagger le resultat

Utiliser archive pour produire une archive qui sera ladistribution source

git tag -a foo-13

git archive --prefix=foo-13 foo-13

| gzip -c - gt foo-13targz

Outils graphiques

gitk

git gui

qgit

giggle

Web browsers cgit gitweb

Integration avec eclipse

Installation

ajouter httpdownloadeclipseorgegitupdatescomme site de telechargement(Preferences rarr InstallUpdates)

installer EGit et JGit (Help rarr Install new software)

Eclipse peut alors gerer lrsquohistorique du projet avec git

Documentationhttpwwweclipseorgegitdocumentation

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Introduction

Systeme de gestion de version distribue

par opposition a CVS ou subversion qui sont centralises

Developpe par Linus Torvalds pour le noyau Linux

Similaire a Monotone Darcs Mercurial Bazaar etc

Interfaces de git

Ligne de commande

Diverses GUI pour git (gitk qgit giggles etc)

Plugin Eclipse EGit

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Concepts de base

repository tout lrsquohistorique du projetcontenu dans le repertoire git

diff ou patch differences entre 2 versions drsquoun fichier

commit (verbe) action drsquoenregistrer les version drsquoun ensemblede fichiersdans le repository

commit (nom) le resultat drsquoune action de commit representepar un hash SHA-1

branche une lignee de developpementpar defaut tout le developpement se fait dans labranche master

tag un identificateur symbolique pour un commit ou unebranche

Concepts de base (2)

Working tree Lrsquoarborscence de fichiers en cours drsquoedition

Index un objet traquant les fichiers modifies ajoutes ousupprimes

Blob donnees binaires utilisees pour stocker les fichierscommits et autres donnees

Configuration initiale

Definir les valeurs par defaut pour les commits

Nom drsquoutilisateur amp adresse mail

Editeur de textes prefere

git config --global --add username Matthieu Herrb

git config --global --add useremail

ltmatthieuherrblaasfrgt

git config --global --add coreeditor emacs -nw

cat ~gitconfig

[user]

name = Matthieu Herrb

email = ltmatthieuherrblaasfrgt

[core]

editor = emacs -nw

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Creer un repository

git init cree un repository vide dans le repertoire courant

mkdir git-tutorial

cd git-tutorial

git init

Initialized empty Git repository in homemhgit-tuturialgit

ls -l git

total 24

-rw-r--r-- 1 mh mh 23 Oct 26 0914 HEAD

-rw-r--r-- 1 mh mh 111 Oct 26 0914 config

-rw-r--r-- 1 mh mh 58 Oct 26 0914 description

drwxr-xr-x 12 mh mh 408 Oct 26 0914 hooks

drwxr-xr-x 3 mh mh 102 Oct 26 0914 info

drwxr-xr-x 4 mh mh 136 Oct 26 0914 objects

drwxr-xr-x 4 mh mh 136 Oct 26 0914 refs

Ajout de fichiers

git add ajoute des fichiers nouveaux ou recemment modifies alrsquoindex

echo Hello World gt filetxt

git add

Consulter lrsquoetat

Affichier la branche courante et lrsquoetat de lrsquoindex

git status

On branch master

Initial commit

Changes to be committed

(use git rm --cached ltfilegt to unstage)

new file filetxt

Committer les modifications

git commit

Created initial commit 0ba7bd8 Initial version

1 files changed 1 insertions(+) 0 deletions(-)

create mode 100644 filetxt

echo Hello Matthieu gt filetxt

git commit -a

Created commit 7fbf4cb Modif

1 files changed 1 insertions(+) 1 deletions(-)

Ouvre lrsquoediteur de textes pour entrer un message de commitpuis enregistre les modifications dans le repository

Regarder en arriere

Plusieurs facons drsquoexaminer lrsquohistorique des modifications

git log

commit 7fbf4cb7c8977061fbfb609016f5414e833a3a1c

Author Matthieu Herrb ltmatthieuherrblaasfrgt

Date Tue Oct 28 122933 2008 +0100

Modif

commit 0ba7bd8b93ef9ddd8917814bde8cbdaaf9732559

Author Matthieu Herrb ltmatthieuherrblaasfrgt

Date Tue Oct 28 122838 2008 +0100

Initial version

git log --stat

git log -p

Examiner les modifications

Affiche les modifications entre le working set et lrsquoindexou entre lrsquoindex et le repository

echo Good bye gt filetxt

git diff

diff --git afiletxt bfiletxt

index 6bd8f3cc0ee9ab 100644

--- afiletxt

+++ bfiletxt

-1 +1

-Hello Matthieu

+Good bye

git add filetxt

git diff --cached

Marquer une version

Creer un objet de type tag contenant un nom et un commentaireOuvre lrsquoediteur de texte pour saisir le commentaire

git tag -a git-tuto-10

git tag -l

git-tuto-10

Corriger les erreurs revenir a une version saine

Restaurer le working set a partir de la derniere version commiteedetruisant toutes les modifications locales

git reset --hard

Inverser un commit donne

git revert 03bace

Finished one revert

Created commit c333ab5 Revert 3rd version

1 files changed 1 insertions(+) 1 deletions(-)

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Changer de branche

Creer une nouvelle branche

git checkout -b newbranch

Retourner a la branche master

git checkout master

Lister les branches existantes

git branch

master

newbranch

Fusionner les modifications drsquoune autre branche

git merge branch

Fusionne les commits de la branche branch et commite leresultat

2 types de fusion

fast forward pas de conflits seulement des nouveaux commitsa ajouter a la version courante

fusion normale presence de modifications locales utilise unalgorithme de fusion a 3 voies

Gestion des conflits

Un conflit se produit lorsque les modifications a fusionner sontincompatibles avec les modifications locales de la branche cible

Les fichiers avec des conflits contiennent des marqueurs deconflit

Ils ne sont pas automatiquement ajoutes a lrsquoindex

Resoudre le conflict

Ajouter les fichiers a lrsquoindex

Committer le resultat

Outils pour aider a la fusion

Git peut utiliser des outils tiers pour aider a resoudre les conflitskdiff3 tkdiff meld xxdiff opendiff

git config --global mergetool meld

git mergetool

Selectionner des modifications individuelles

Prendre un commit dans une autre branche (une correction de bug)et lrsquoappliquer a la branche courante

git cherry-pick SHA1_HASH

Rebase - rejouer les commits drsquoune branche

Les fusions creent des commits fantomes sous forme de liensdans le graphe des versionsLorsqursquoune branche nrsquoa que quelques commits locaux rebase estpreferable

git rebase master

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Copier un repository

git clone repo

repo un URL du repository a copier Peut etre

un chemin vers un repertoire sur la meme machine

ssh[user]hostpath - utilise GIT dans SSH

githostpath - acces anonyme avec le protocole GIT

httphostpath - acces anonyme avec le protocole HTTP

exercice

repository dinnersshenvol2010traclaasfrgitenvol2010dinner

clonez le repository

creez votre branche personnelle

modifiez le code

utilisez les fichiers de compilation du TP automakearrangez le stylecorrigez des defauts dans le code

commitez vos modifs au fur et a mesure

synchronizez avec le repository central

visualisez les modifs faites par drsquoautres

fusionnez les modifs de plusieurs personnes pour faire unemeilleure version

Mise a jour depuis un repository

git pull

recupere les branches distantes dans le repository local

fusionne la branch distante par defaut dans la branchecouranteet commite le resultat

peut produire un conflit

Resoudre le conflitCommitter le resultat

Branches distantes

git branch -r

liste les branches distantes (originbranch)

Une branche distante peut etre suivie (fusionnee dans les 2 sens)avec

git checkout -t -b newbranch origingnewbranch

Utilisation de rebase avec les branches distantes

fecth recupere les commits distants sans les fusionner

git fetch

git rebase originmaster

Raccourci

git fetch

git rebase originmaster

Envoyer des commits vers un repository

git push

Transfere les commits locaux vers les branches distantes suiviesGenere une erreur si pas a jour (pull ou rebase drsquoabord)

Il faut transferer les tags separement

git push --tags

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Identifier les auteurs

git blame -- filetxt

Pour chaque ligne drsquoun fichier montre le dernier commit et sonauteur

Recherche par dissection drsquoun bug

git bissect permet de rechercher dans lrsquohistorique des commitslrsquoorigine drsquoun bug

git bisect start

git bisect bad la version courante est buguee

git bisect good v2633-rc2 derniere bonne version

Git determine le commit median et lrsquoextraitTester et executer selon le resultat

git bisect good

git bisect bad

A la fin reste le commit responsable du bug

Creer une distribution avec git

(Alternative a la fonction drsquoautomake make dist)

Committer toutes les modifications y compris le nouveau nomde la version

Tagger le resultat

Utiliser archive pour produire une archive qui sera ladistribution source

git tag -a foo-13

git archive --prefix=foo-13 foo-13

| gzip -c - gt foo-13targz

Outils graphiques

gitk

git gui

qgit

giggle

Web browsers cgit gitweb

Integration avec eclipse

Installation

ajouter httpdownloadeclipseorgegitupdatescomme site de telechargement(Preferences rarr InstallUpdates)

installer EGit et JGit (Help rarr Install new software)

Eclipse peut alors gerer lrsquohistorique du projet avec git

Documentationhttpwwweclipseorgegitdocumentation

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix

Introduction

Systeme de gestion de version distribue

par opposition a CVS ou subversion qui sont centralises

Developpe par Linus Torvalds pour le noyau Linux

Similaire a Monotone Darcs Mercurial Bazaar etc

Interfaces de git

Ligne de commande

Diverses GUI pour git (gitk qgit giggles etc)

Plugin Eclipse EGit

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Concepts de base

repository tout lrsquohistorique du projetcontenu dans le repertoire git

diff ou patch differences entre 2 versions drsquoun fichier

commit (verbe) action drsquoenregistrer les version drsquoun ensemblede fichiersdans le repository

commit (nom) le resultat drsquoune action de commit representepar un hash SHA-1

branche une lignee de developpementpar defaut tout le developpement se fait dans labranche master

tag un identificateur symbolique pour un commit ou unebranche

Concepts de base (2)

Working tree Lrsquoarborscence de fichiers en cours drsquoedition

Index un objet traquant les fichiers modifies ajoutes ousupprimes

Blob donnees binaires utilisees pour stocker les fichierscommits et autres donnees

Configuration initiale

Definir les valeurs par defaut pour les commits

Nom drsquoutilisateur amp adresse mail

Editeur de textes prefere

git config --global --add username Matthieu Herrb

git config --global --add useremail

ltmatthieuherrblaasfrgt

git config --global --add coreeditor emacs -nw

cat ~gitconfig

[user]

name = Matthieu Herrb

email = ltmatthieuherrblaasfrgt

[core]

editor = emacs -nw

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Creer un repository

git init cree un repository vide dans le repertoire courant

mkdir git-tutorial

cd git-tutorial

git init

Initialized empty Git repository in homemhgit-tuturialgit

ls -l git

total 24

-rw-r--r-- 1 mh mh 23 Oct 26 0914 HEAD

-rw-r--r-- 1 mh mh 111 Oct 26 0914 config

-rw-r--r-- 1 mh mh 58 Oct 26 0914 description

drwxr-xr-x 12 mh mh 408 Oct 26 0914 hooks

drwxr-xr-x 3 mh mh 102 Oct 26 0914 info

drwxr-xr-x 4 mh mh 136 Oct 26 0914 objects

drwxr-xr-x 4 mh mh 136 Oct 26 0914 refs

Ajout de fichiers

git add ajoute des fichiers nouveaux ou recemment modifies alrsquoindex

echo Hello World gt filetxt

git add

Consulter lrsquoetat

Affichier la branche courante et lrsquoetat de lrsquoindex

git status

On branch master

Initial commit

Changes to be committed

(use git rm --cached ltfilegt to unstage)

new file filetxt

Committer les modifications

git commit

Created initial commit 0ba7bd8 Initial version

1 files changed 1 insertions(+) 0 deletions(-)

create mode 100644 filetxt

echo Hello Matthieu gt filetxt

git commit -a

Created commit 7fbf4cb Modif

1 files changed 1 insertions(+) 1 deletions(-)

Ouvre lrsquoediteur de textes pour entrer un message de commitpuis enregistre les modifications dans le repository

Regarder en arriere

Plusieurs facons drsquoexaminer lrsquohistorique des modifications

git log

commit 7fbf4cb7c8977061fbfb609016f5414e833a3a1c

Author Matthieu Herrb ltmatthieuherrblaasfrgt

Date Tue Oct 28 122933 2008 +0100

Modif

commit 0ba7bd8b93ef9ddd8917814bde8cbdaaf9732559

Author Matthieu Herrb ltmatthieuherrblaasfrgt

Date Tue Oct 28 122838 2008 +0100

Initial version

git log --stat

git log -p

Examiner les modifications

Affiche les modifications entre le working set et lrsquoindexou entre lrsquoindex et le repository

echo Good bye gt filetxt

git diff

diff --git afiletxt bfiletxt

index 6bd8f3cc0ee9ab 100644

--- afiletxt

+++ bfiletxt

-1 +1

-Hello Matthieu

+Good bye

git add filetxt

git diff --cached

Marquer une version

Creer un objet de type tag contenant un nom et un commentaireOuvre lrsquoediteur de texte pour saisir le commentaire

git tag -a git-tuto-10

git tag -l

git-tuto-10

Corriger les erreurs revenir a une version saine

Restaurer le working set a partir de la derniere version commiteedetruisant toutes les modifications locales

git reset --hard

Inverser un commit donne

git revert 03bace

Finished one revert

Created commit c333ab5 Revert 3rd version

1 files changed 1 insertions(+) 1 deletions(-)

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Changer de branche

Creer une nouvelle branche

git checkout -b newbranch

Retourner a la branche master

git checkout master

Lister les branches existantes

git branch

master

newbranch

Fusionner les modifications drsquoune autre branche

git merge branch

Fusionne les commits de la branche branch et commite leresultat

2 types de fusion

fast forward pas de conflits seulement des nouveaux commitsa ajouter a la version courante

fusion normale presence de modifications locales utilise unalgorithme de fusion a 3 voies

Gestion des conflits

Un conflit se produit lorsque les modifications a fusionner sontincompatibles avec les modifications locales de la branche cible

Les fichiers avec des conflits contiennent des marqueurs deconflit

Ils ne sont pas automatiquement ajoutes a lrsquoindex

Resoudre le conflict

Ajouter les fichiers a lrsquoindex

Committer le resultat

Outils pour aider a la fusion

Git peut utiliser des outils tiers pour aider a resoudre les conflitskdiff3 tkdiff meld xxdiff opendiff

git config --global mergetool meld

git mergetool

Selectionner des modifications individuelles

Prendre un commit dans une autre branche (une correction de bug)et lrsquoappliquer a la branche courante

git cherry-pick SHA1_HASH

Rebase - rejouer les commits drsquoune branche

Les fusions creent des commits fantomes sous forme de liensdans le graphe des versionsLorsqursquoune branche nrsquoa que quelques commits locaux rebase estpreferable

git rebase master

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Copier un repository

git clone repo

repo un URL du repository a copier Peut etre

un chemin vers un repertoire sur la meme machine

ssh[user]hostpath - utilise GIT dans SSH

githostpath - acces anonyme avec le protocole GIT

httphostpath - acces anonyme avec le protocole HTTP

exercice

repository dinnersshenvol2010traclaasfrgitenvol2010dinner

clonez le repository

creez votre branche personnelle

modifiez le code

utilisez les fichiers de compilation du TP automakearrangez le stylecorrigez des defauts dans le code

commitez vos modifs au fur et a mesure

synchronizez avec le repository central

visualisez les modifs faites par drsquoautres

fusionnez les modifs de plusieurs personnes pour faire unemeilleure version

Mise a jour depuis un repository

git pull

recupere les branches distantes dans le repository local

fusionne la branch distante par defaut dans la branchecouranteet commite le resultat

peut produire un conflit

Resoudre le conflitCommitter le resultat

Branches distantes

git branch -r

liste les branches distantes (originbranch)

Une branche distante peut etre suivie (fusionnee dans les 2 sens)avec

git checkout -t -b newbranch origingnewbranch

Utilisation de rebase avec les branches distantes

fecth recupere les commits distants sans les fusionner

git fetch

git rebase originmaster

Raccourci

git fetch

git rebase originmaster

Envoyer des commits vers un repository

git push

Transfere les commits locaux vers les branches distantes suiviesGenere une erreur si pas a jour (pull ou rebase drsquoabord)

Il faut transferer les tags separement

git push --tags

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Identifier les auteurs

git blame -- filetxt

Pour chaque ligne drsquoun fichier montre le dernier commit et sonauteur

Recherche par dissection drsquoun bug

git bissect permet de rechercher dans lrsquohistorique des commitslrsquoorigine drsquoun bug

git bisect start

git bisect bad la version courante est buguee

git bisect good v2633-rc2 derniere bonne version

Git determine le commit median et lrsquoextraitTester et executer selon le resultat

git bisect good

git bisect bad

A la fin reste le commit responsable du bug

Creer une distribution avec git

(Alternative a la fonction drsquoautomake make dist)

Committer toutes les modifications y compris le nouveau nomde la version

Tagger le resultat

Utiliser archive pour produire une archive qui sera ladistribution source

git tag -a foo-13

git archive --prefix=foo-13 foo-13

| gzip -c - gt foo-13targz

Outils graphiques

gitk

git gui

qgit

giggle

Web browsers cgit gitweb

Integration avec eclipse

Installation

ajouter httpdownloadeclipseorgegitupdatescomme site de telechargement(Preferences rarr InstallUpdates)

installer EGit et JGit (Help rarr Install new software)

Eclipse peut alors gerer lrsquohistorique du projet avec git

Documentationhttpwwweclipseorgegitdocumentation

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix

Interfaces de git

Ligne de commande

Diverses GUI pour git (gitk qgit giggles etc)

Plugin Eclipse EGit

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Concepts de base

repository tout lrsquohistorique du projetcontenu dans le repertoire git

diff ou patch differences entre 2 versions drsquoun fichier

commit (verbe) action drsquoenregistrer les version drsquoun ensemblede fichiersdans le repository

commit (nom) le resultat drsquoune action de commit representepar un hash SHA-1

branche une lignee de developpementpar defaut tout le developpement se fait dans labranche master

tag un identificateur symbolique pour un commit ou unebranche

Concepts de base (2)

Working tree Lrsquoarborscence de fichiers en cours drsquoedition

Index un objet traquant les fichiers modifies ajoutes ousupprimes

Blob donnees binaires utilisees pour stocker les fichierscommits et autres donnees

Configuration initiale

Definir les valeurs par defaut pour les commits

Nom drsquoutilisateur amp adresse mail

Editeur de textes prefere

git config --global --add username Matthieu Herrb

git config --global --add useremail

ltmatthieuherrblaasfrgt

git config --global --add coreeditor emacs -nw

cat ~gitconfig

[user]

name = Matthieu Herrb

email = ltmatthieuherrblaasfrgt

[core]

editor = emacs -nw

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Creer un repository

git init cree un repository vide dans le repertoire courant

mkdir git-tutorial

cd git-tutorial

git init

Initialized empty Git repository in homemhgit-tuturialgit

ls -l git

total 24

-rw-r--r-- 1 mh mh 23 Oct 26 0914 HEAD

-rw-r--r-- 1 mh mh 111 Oct 26 0914 config

-rw-r--r-- 1 mh mh 58 Oct 26 0914 description

drwxr-xr-x 12 mh mh 408 Oct 26 0914 hooks

drwxr-xr-x 3 mh mh 102 Oct 26 0914 info

drwxr-xr-x 4 mh mh 136 Oct 26 0914 objects

drwxr-xr-x 4 mh mh 136 Oct 26 0914 refs

Ajout de fichiers

git add ajoute des fichiers nouveaux ou recemment modifies alrsquoindex

echo Hello World gt filetxt

git add

Consulter lrsquoetat

Affichier la branche courante et lrsquoetat de lrsquoindex

git status

On branch master

Initial commit

Changes to be committed

(use git rm --cached ltfilegt to unstage)

new file filetxt

Committer les modifications

git commit

Created initial commit 0ba7bd8 Initial version

1 files changed 1 insertions(+) 0 deletions(-)

create mode 100644 filetxt

echo Hello Matthieu gt filetxt

git commit -a

Created commit 7fbf4cb Modif

1 files changed 1 insertions(+) 1 deletions(-)

Ouvre lrsquoediteur de textes pour entrer un message de commitpuis enregistre les modifications dans le repository

Regarder en arriere

Plusieurs facons drsquoexaminer lrsquohistorique des modifications

git log

commit 7fbf4cb7c8977061fbfb609016f5414e833a3a1c

Author Matthieu Herrb ltmatthieuherrblaasfrgt

Date Tue Oct 28 122933 2008 +0100

Modif

commit 0ba7bd8b93ef9ddd8917814bde8cbdaaf9732559

Author Matthieu Herrb ltmatthieuherrblaasfrgt

Date Tue Oct 28 122838 2008 +0100

Initial version

git log --stat

git log -p

Examiner les modifications

Affiche les modifications entre le working set et lrsquoindexou entre lrsquoindex et le repository

echo Good bye gt filetxt

git diff

diff --git afiletxt bfiletxt

index 6bd8f3cc0ee9ab 100644

--- afiletxt

+++ bfiletxt

-1 +1

-Hello Matthieu

+Good bye

git add filetxt

git diff --cached

Marquer une version

Creer un objet de type tag contenant un nom et un commentaireOuvre lrsquoediteur de texte pour saisir le commentaire

git tag -a git-tuto-10

git tag -l

git-tuto-10

Corriger les erreurs revenir a une version saine

Restaurer le working set a partir de la derniere version commiteedetruisant toutes les modifications locales

git reset --hard

Inverser un commit donne

git revert 03bace

Finished one revert

Created commit c333ab5 Revert 3rd version

1 files changed 1 insertions(+) 1 deletions(-)

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Changer de branche

Creer une nouvelle branche

git checkout -b newbranch

Retourner a la branche master

git checkout master

Lister les branches existantes

git branch

master

newbranch

Fusionner les modifications drsquoune autre branche

git merge branch

Fusionne les commits de la branche branch et commite leresultat

2 types de fusion

fast forward pas de conflits seulement des nouveaux commitsa ajouter a la version courante

fusion normale presence de modifications locales utilise unalgorithme de fusion a 3 voies

Gestion des conflits

Un conflit se produit lorsque les modifications a fusionner sontincompatibles avec les modifications locales de la branche cible

Les fichiers avec des conflits contiennent des marqueurs deconflit

Ils ne sont pas automatiquement ajoutes a lrsquoindex

Resoudre le conflict

Ajouter les fichiers a lrsquoindex

Committer le resultat

Outils pour aider a la fusion

Git peut utiliser des outils tiers pour aider a resoudre les conflitskdiff3 tkdiff meld xxdiff opendiff

git config --global mergetool meld

git mergetool

Selectionner des modifications individuelles

Prendre un commit dans une autre branche (une correction de bug)et lrsquoappliquer a la branche courante

git cherry-pick SHA1_HASH

Rebase - rejouer les commits drsquoune branche

Les fusions creent des commits fantomes sous forme de liensdans le graphe des versionsLorsqursquoune branche nrsquoa que quelques commits locaux rebase estpreferable

git rebase master

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Copier un repository

git clone repo

repo un URL du repository a copier Peut etre

un chemin vers un repertoire sur la meme machine

ssh[user]hostpath - utilise GIT dans SSH

githostpath - acces anonyme avec le protocole GIT

httphostpath - acces anonyme avec le protocole HTTP

exercice

repository dinnersshenvol2010traclaasfrgitenvol2010dinner

clonez le repository

creez votre branche personnelle

modifiez le code

utilisez les fichiers de compilation du TP automakearrangez le stylecorrigez des defauts dans le code

commitez vos modifs au fur et a mesure

synchronizez avec le repository central

visualisez les modifs faites par drsquoautres

fusionnez les modifs de plusieurs personnes pour faire unemeilleure version

Mise a jour depuis un repository

git pull

recupere les branches distantes dans le repository local

fusionne la branch distante par defaut dans la branchecouranteet commite le resultat

peut produire un conflit

Resoudre le conflitCommitter le resultat

Branches distantes

git branch -r

liste les branches distantes (originbranch)

Une branche distante peut etre suivie (fusionnee dans les 2 sens)avec

git checkout -t -b newbranch origingnewbranch

Utilisation de rebase avec les branches distantes

fecth recupere les commits distants sans les fusionner

git fetch

git rebase originmaster

Raccourci

git fetch

git rebase originmaster

Envoyer des commits vers un repository

git push

Transfere les commits locaux vers les branches distantes suiviesGenere une erreur si pas a jour (pull ou rebase drsquoabord)

Il faut transferer les tags separement

git push --tags

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Identifier les auteurs

git blame -- filetxt

Pour chaque ligne drsquoun fichier montre le dernier commit et sonauteur

Recherche par dissection drsquoun bug

git bissect permet de rechercher dans lrsquohistorique des commitslrsquoorigine drsquoun bug

git bisect start

git bisect bad la version courante est buguee

git bisect good v2633-rc2 derniere bonne version

Git determine le commit median et lrsquoextraitTester et executer selon le resultat

git bisect good

git bisect bad

A la fin reste le commit responsable du bug

Creer une distribution avec git

(Alternative a la fonction drsquoautomake make dist)

Committer toutes les modifications y compris le nouveau nomde la version

Tagger le resultat

Utiliser archive pour produire une archive qui sera ladistribution source

git tag -a foo-13

git archive --prefix=foo-13 foo-13

| gzip -c - gt foo-13targz

Outils graphiques

gitk

git gui

qgit

giggle

Web browsers cgit gitweb

Integration avec eclipse

Installation

ajouter httpdownloadeclipseorgegitupdatescomme site de telechargement(Preferences rarr InstallUpdates)

installer EGit et JGit (Help rarr Install new software)

Eclipse peut alors gerer lrsquohistorique du projet avec git

Documentationhttpwwweclipseorgegitdocumentation

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Concepts de base

repository tout lrsquohistorique du projetcontenu dans le repertoire git

diff ou patch differences entre 2 versions drsquoun fichier

commit (verbe) action drsquoenregistrer les version drsquoun ensemblede fichiersdans le repository

commit (nom) le resultat drsquoune action de commit representepar un hash SHA-1

branche une lignee de developpementpar defaut tout le developpement se fait dans labranche master

tag un identificateur symbolique pour un commit ou unebranche

Concepts de base (2)

Working tree Lrsquoarborscence de fichiers en cours drsquoedition

Index un objet traquant les fichiers modifies ajoutes ousupprimes

Blob donnees binaires utilisees pour stocker les fichierscommits et autres donnees

Configuration initiale

Definir les valeurs par defaut pour les commits

Nom drsquoutilisateur amp adresse mail

Editeur de textes prefere

git config --global --add username Matthieu Herrb

git config --global --add useremail

ltmatthieuherrblaasfrgt

git config --global --add coreeditor emacs -nw

cat ~gitconfig

[user]

name = Matthieu Herrb

email = ltmatthieuherrblaasfrgt

[core]

editor = emacs -nw

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Creer un repository

git init cree un repository vide dans le repertoire courant

mkdir git-tutorial

cd git-tutorial

git init

Initialized empty Git repository in homemhgit-tuturialgit

ls -l git

total 24

-rw-r--r-- 1 mh mh 23 Oct 26 0914 HEAD

-rw-r--r-- 1 mh mh 111 Oct 26 0914 config

-rw-r--r-- 1 mh mh 58 Oct 26 0914 description

drwxr-xr-x 12 mh mh 408 Oct 26 0914 hooks

drwxr-xr-x 3 mh mh 102 Oct 26 0914 info

drwxr-xr-x 4 mh mh 136 Oct 26 0914 objects

drwxr-xr-x 4 mh mh 136 Oct 26 0914 refs

Ajout de fichiers

git add ajoute des fichiers nouveaux ou recemment modifies alrsquoindex

echo Hello World gt filetxt

git add

Consulter lrsquoetat

Affichier la branche courante et lrsquoetat de lrsquoindex

git status

On branch master

Initial commit

Changes to be committed

(use git rm --cached ltfilegt to unstage)

new file filetxt

Committer les modifications

git commit

Created initial commit 0ba7bd8 Initial version

1 files changed 1 insertions(+) 0 deletions(-)

create mode 100644 filetxt

echo Hello Matthieu gt filetxt

git commit -a

Created commit 7fbf4cb Modif

1 files changed 1 insertions(+) 1 deletions(-)

Ouvre lrsquoediteur de textes pour entrer un message de commitpuis enregistre les modifications dans le repository

Regarder en arriere

Plusieurs facons drsquoexaminer lrsquohistorique des modifications

git log

commit 7fbf4cb7c8977061fbfb609016f5414e833a3a1c

Author Matthieu Herrb ltmatthieuherrblaasfrgt

Date Tue Oct 28 122933 2008 +0100

Modif

commit 0ba7bd8b93ef9ddd8917814bde8cbdaaf9732559

Author Matthieu Herrb ltmatthieuherrblaasfrgt

Date Tue Oct 28 122838 2008 +0100

Initial version

git log --stat

git log -p

Examiner les modifications

Affiche les modifications entre le working set et lrsquoindexou entre lrsquoindex et le repository

echo Good bye gt filetxt

git diff

diff --git afiletxt bfiletxt

index 6bd8f3cc0ee9ab 100644

--- afiletxt

+++ bfiletxt

-1 +1

-Hello Matthieu

+Good bye

git add filetxt

git diff --cached

Marquer une version

Creer un objet de type tag contenant un nom et un commentaireOuvre lrsquoediteur de texte pour saisir le commentaire

git tag -a git-tuto-10

git tag -l

git-tuto-10

Corriger les erreurs revenir a une version saine

Restaurer le working set a partir de la derniere version commiteedetruisant toutes les modifications locales

git reset --hard

Inverser un commit donne

git revert 03bace

Finished one revert

Created commit c333ab5 Revert 3rd version

1 files changed 1 insertions(+) 1 deletions(-)

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Changer de branche

Creer une nouvelle branche

git checkout -b newbranch

Retourner a la branche master

git checkout master

Lister les branches existantes

git branch

master

newbranch

Fusionner les modifications drsquoune autre branche

git merge branch

Fusionne les commits de la branche branch et commite leresultat

2 types de fusion

fast forward pas de conflits seulement des nouveaux commitsa ajouter a la version courante

fusion normale presence de modifications locales utilise unalgorithme de fusion a 3 voies

Gestion des conflits

Un conflit se produit lorsque les modifications a fusionner sontincompatibles avec les modifications locales de la branche cible

Les fichiers avec des conflits contiennent des marqueurs deconflit

Ils ne sont pas automatiquement ajoutes a lrsquoindex

Resoudre le conflict

Ajouter les fichiers a lrsquoindex

Committer le resultat

Outils pour aider a la fusion

Git peut utiliser des outils tiers pour aider a resoudre les conflitskdiff3 tkdiff meld xxdiff opendiff

git config --global mergetool meld

git mergetool

Selectionner des modifications individuelles

Prendre un commit dans une autre branche (une correction de bug)et lrsquoappliquer a la branche courante

git cherry-pick SHA1_HASH

Rebase - rejouer les commits drsquoune branche

Les fusions creent des commits fantomes sous forme de liensdans le graphe des versionsLorsqursquoune branche nrsquoa que quelques commits locaux rebase estpreferable

git rebase master

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Copier un repository

git clone repo

repo un URL du repository a copier Peut etre

un chemin vers un repertoire sur la meme machine

ssh[user]hostpath - utilise GIT dans SSH

githostpath - acces anonyme avec le protocole GIT

httphostpath - acces anonyme avec le protocole HTTP

exercice

repository dinnersshenvol2010traclaasfrgitenvol2010dinner

clonez le repository

creez votre branche personnelle

modifiez le code

utilisez les fichiers de compilation du TP automakearrangez le stylecorrigez des defauts dans le code

commitez vos modifs au fur et a mesure

synchronizez avec le repository central

visualisez les modifs faites par drsquoautres

fusionnez les modifs de plusieurs personnes pour faire unemeilleure version

Mise a jour depuis un repository

git pull

recupere les branches distantes dans le repository local

fusionne la branch distante par defaut dans la branchecouranteet commite le resultat

peut produire un conflit

Resoudre le conflitCommitter le resultat

Branches distantes

git branch -r

liste les branches distantes (originbranch)

Une branche distante peut etre suivie (fusionnee dans les 2 sens)avec

git checkout -t -b newbranch origingnewbranch

Utilisation de rebase avec les branches distantes

fecth recupere les commits distants sans les fusionner

git fetch

git rebase originmaster

Raccourci

git fetch

git rebase originmaster

Envoyer des commits vers un repository

git push

Transfere les commits locaux vers les branches distantes suiviesGenere une erreur si pas a jour (pull ou rebase drsquoabord)

Il faut transferer les tags separement

git push --tags

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Identifier les auteurs

git blame -- filetxt

Pour chaque ligne drsquoun fichier montre le dernier commit et sonauteur

Recherche par dissection drsquoun bug

git bissect permet de rechercher dans lrsquohistorique des commitslrsquoorigine drsquoun bug

git bisect start

git bisect bad la version courante est buguee

git bisect good v2633-rc2 derniere bonne version

Git determine le commit median et lrsquoextraitTester et executer selon le resultat

git bisect good

git bisect bad

A la fin reste le commit responsable du bug

Creer une distribution avec git

(Alternative a la fonction drsquoautomake make dist)

Committer toutes les modifications y compris le nouveau nomde la version

Tagger le resultat

Utiliser archive pour produire une archive qui sera ladistribution source

git tag -a foo-13

git archive --prefix=foo-13 foo-13

| gzip -c - gt foo-13targz

Outils graphiques

gitk

git gui

qgit

giggle

Web browsers cgit gitweb

Integration avec eclipse

Installation

ajouter httpdownloadeclipseorgegitupdatescomme site de telechargement(Preferences rarr InstallUpdates)

installer EGit et JGit (Help rarr Install new software)

Eclipse peut alors gerer lrsquohistorique du projet avec git

Documentationhttpwwweclipseorgegitdocumentation

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix

Concepts de base

repository tout lrsquohistorique du projetcontenu dans le repertoire git

diff ou patch differences entre 2 versions drsquoun fichier

commit (verbe) action drsquoenregistrer les version drsquoun ensemblede fichiersdans le repository

commit (nom) le resultat drsquoune action de commit representepar un hash SHA-1

branche une lignee de developpementpar defaut tout le developpement se fait dans labranche master

tag un identificateur symbolique pour un commit ou unebranche

Concepts de base (2)

Working tree Lrsquoarborscence de fichiers en cours drsquoedition

Index un objet traquant les fichiers modifies ajoutes ousupprimes

Blob donnees binaires utilisees pour stocker les fichierscommits et autres donnees

Configuration initiale

Definir les valeurs par defaut pour les commits

Nom drsquoutilisateur amp adresse mail

Editeur de textes prefere

git config --global --add username Matthieu Herrb

git config --global --add useremail

ltmatthieuherrblaasfrgt

git config --global --add coreeditor emacs -nw

cat ~gitconfig

[user]

name = Matthieu Herrb

email = ltmatthieuherrblaasfrgt

[core]

editor = emacs -nw

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Creer un repository

git init cree un repository vide dans le repertoire courant

mkdir git-tutorial

cd git-tutorial

git init

Initialized empty Git repository in homemhgit-tuturialgit

ls -l git

total 24

-rw-r--r-- 1 mh mh 23 Oct 26 0914 HEAD

-rw-r--r-- 1 mh mh 111 Oct 26 0914 config

-rw-r--r-- 1 mh mh 58 Oct 26 0914 description

drwxr-xr-x 12 mh mh 408 Oct 26 0914 hooks

drwxr-xr-x 3 mh mh 102 Oct 26 0914 info

drwxr-xr-x 4 mh mh 136 Oct 26 0914 objects

drwxr-xr-x 4 mh mh 136 Oct 26 0914 refs

Ajout de fichiers

git add ajoute des fichiers nouveaux ou recemment modifies alrsquoindex

echo Hello World gt filetxt

git add

Consulter lrsquoetat

Affichier la branche courante et lrsquoetat de lrsquoindex

git status

On branch master

Initial commit

Changes to be committed

(use git rm --cached ltfilegt to unstage)

new file filetxt

Committer les modifications

git commit

Created initial commit 0ba7bd8 Initial version

1 files changed 1 insertions(+) 0 deletions(-)

create mode 100644 filetxt

echo Hello Matthieu gt filetxt

git commit -a

Created commit 7fbf4cb Modif

1 files changed 1 insertions(+) 1 deletions(-)

Ouvre lrsquoediteur de textes pour entrer un message de commitpuis enregistre les modifications dans le repository

Regarder en arriere

Plusieurs facons drsquoexaminer lrsquohistorique des modifications

git log

commit 7fbf4cb7c8977061fbfb609016f5414e833a3a1c

Author Matthieu Herrb ltmatthieuherrblaasfrgt

Date Tue Oct 28 122933 2008 +0100

Modif

commit 0ba7bd8b93ef9ddd8917814bde8cbdaaf9732559

Author Matthieu Herrb ltmatthieuherrblaasfrgt

Date Tue Oct 28 122838 2008 +0100

Initial version

git log --stat

git log -p

Examiner les modifications

Affiche les modifications entre le working set et lrsquoindexou entre lrsquoindex et le repository

echo Good bye gt filetxt

git diff

diff --git afiletxt bfiletxt

index 6bd8f3cc0ee9ab 100644

--- afiletxt

+++ bfiletxt

-1 +1

-Hello Matthieu

+Good bye

git add filetxt

git diff --cached

Marquer une version

Creer un objet de type tag contenant un nom et un commentaireOuvre lrsquoediteur de texte pour saisir le commentaire

git tag -a git-tuto-10

git tag -l

git-tuto-10

Corriger les erreurs revenir a une version saine

Restaurer le working set a partir de la derniere version commiteedetruisant toutes les modifications locales

git reset --hard

Inverser un commit donne

git revert 03bace

Finished one revert

Created commit c333ab5 Revert 3rd version

1 files changed 1 insertions(+) 1 deletions(-)

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Changer de branche

Creer une nouvelle branche

git checkout -b newbranch

Retourner a la branche master

git checkout master

Lister les branches existantes

git branch

master

newbranch

Fusionner les modifications drsquoune autre branche

git merge branch

Fusionne les commits de la branche branch et commite leresultat

2 types de fusion

fast forward pas de conflits seulement des nouveaux commitsa ajouter a la version courante

fusion normale presence de modifications locales utilise unalgorithme de fusion a 3 voies

Gestion des conflits

Un conflit se produit lorsque les modifications a fusionner sontincompatibles avec les modifications locales de la branche cible

Les fichiers avec des conflits contiennent des marqueurs deconflit

Ils ne sont pas automatiquement ajoutes a lrsquoindex

Resoudre le conflict

Ajouter les fichiers a lrsquoindex

Committer le resultat

Outils pour aider a la fusion

Git peut utiliser des outils tiers pour aider a resoudre les conflitskdiff3 tkdiff meld xxdiff opendiff

git config --global mergetool meld

git mergetool

Selectionner des modifications individuelles

Prendre un commit dans une autre branche (une correction de bug)et lrsquoappliquer a la branche courante

git cherry-pick SHA1_HASH

Rebase - rejouer les commits drsquoune branche

Les fusions creent des commits fantomes sous forme de liensdans le graphe des versionsLorsqursquoune branche nrsquoa que quelques commits locaux rebase estpreferable

git rebase master

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Copier un repository

git clone repo

repo un URL du repository a copier Peut etre

un chemin vers un repertoire sur la meme machine

ssh[user]hostpath - utilise GIT dans SSH

githostpath - acces anonyme avec le protocole GIT

httphostpath - acces anonyme avec le protocole HTTP

exercice

repository dinnersshenvol2010traclaasfrgitenvol2010dinner

clonez le repository

creez votre branche personnelle

modifiez le code

utilisez les fichiers de compilation du TP automakearrangez le stylecorrigez des defauts dans le code

commitez vos modifs au fur et a mesure

synchronizez avec le repository central

visualisez les modifs faites par drsquoautres

fusionnez les modifs de plusieurs personnes pour faire unemeilleure version

Mise a jour depuis un repository

git pull

recupere les branches distantes dans le repository local

fusionne la branch distante par defaut dans la branchecouranteet commite le resultat

peut produire un conflit

Resoudre le conflitCommitter le resultat

Branches distantes

git branch -r

liste les branches distantes (originbranch)

Une branche distante peut etre suivie (fusionnee dans les 2 sens)avec

git checkout -t -b newbranch origingnewbranch

Utilisation de rebase avec les branches distantes

fecth recupere les commits distants sans les fusionner

git fetch

git rebase originmaster

Raccourci

git fetch

git rebase originmaster

Envoyer des commits vers un repository

git push

Transfere les commits locaux vers les branches distantes suiviesGenere une erreur si pas a jour (pull ou rebase drsquoabord)

Il faut transferer les tags separement

git push --tags

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Identifier les auteurs

git blame -- filetxt

Pour chaque ligne drsquoun fichier montre le dernier commit et sonauteur

Recherche par dissection drsquoun bug

git bissect permet de rechercher dans lrsquohistorique des commitslrsquoorigine drsquoun bug

git bisect start

git bisect bad la version courante est buguee

git bisect good v2633-rc2 derniere bonne version

Git determine le commit median et lrsquoextraitTester et executer selon le resultat

git bisect good

git bisect bad

A la fin reste le commit responsable du bug

Creer une distribution avec git

(Alternative a la fonction drsquoautomake make dist)

Committer toutes les modifications y compris le nouveau nomde la version

Tagger le resultat

Utiliser archive pour produire une archive qui sera ladistribution source

git tag -a foo-13

git archive --prefix=foo-13 foo-13

| gzip -c - gt foo-13targz

Outils graphiques

gitk

git gui

qgit

giggle

Web browsers cgit gitweb

Integration avec eclipse

Installation

ajouter httpdownloadeclipseorgegitupdatescomme site de telechargement(Preferences rarr InstallUpdates)

installer EGit et JGit (Help rarr Install new software)

Eclipse peut alors gerer lrsquohistorique du projet avec git

Documentationhttpwwweclipseorgegitdocumentation

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix

Concepts de base (2)

Working tree Lrsquoarborscence de fichiers en cours drsquoedition

Index un objet traquant les fichiers modifies ajoutes ousupprimes

Blob donnees binaires utilisees pour stocker les fichierscommits et autres donnees

Configuration initiale

Definir les valeurs par defaut pour les commits

Nom drsquoutilisateur amp adresse mail

Editeur de textes prefere

git config --global --add username Matthieu Herrb

git config --global --add useremail

ltmatthieuherrblaasfrgt

git config --global --add coreeditor emacs -nw

cat ~gitconfig

[user]

name = Matthieu Herrb

email = ltmatthieuherrblaasfrgt

[core]

editor = emacs -nw

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Creer un repository

git init cree un repository vide dans le repertoire courant

mkdir git-tutorial

cd git-tutorial

git init

Initialized empty Git repository in homemhgit-tuturialgit

ls -l git

total 24

-rw-r--r-- 1 mh mh 23 Oct 26 0914 HEAD

-rw-r--r-- 1 mh mh 111 Oct 26 0914 config

-rw-r--r-- 1 mh mh 58 Oct 26 0914 description

drwxr-xr-x 12 mh mh 408 Oct 26 0914 hooks

drwxr-xr-x 3 mh mh 102 Oct 26 0914 info

drwxr-xr-x 4 mh mh 136 Oct 26 0914 objects

drwxr-xr-x 4 mh mh 136 Oct 26 0914 refs

Ajout de fichiers

git add ajoute des fichiers nouveaux ou recemment modifies alrsquoindex

echo Hello World gt filetxt

git add

Consulter lrsquoetat

Affichier la branche courante et lrsquoetat de lrsquoindex

git status

On branch master

Initial commit

Changes to be committed

(use git rm --cached ltfilegt to unstage)

new file filetxt

Committer les modifications

git commit

Created initial commit 0ba7bd8 Initial version

1 files changed 1 insertions(+) 0 deletions(-)

create mode 100644 filetxt

echo Hello Matthieu gt filetxt

git commit -a

Created commit 7fbf4cb Modif

1 files changed 1 insertions(+) 1 deletions(-)

Ouvre lrsquoediteur de textes pour entrer un message de commitpuis enregistre les modifications dans le repository

Regarder en arriere

Plusieurs facons drsquoexaminer lrsquohistorique des modifications

git log

commit 7fbf4cb7c8977061fbfb609016f5414e833a3a1c

Author Matthieu Herrb ltmatthieuherrblaasfrgt

Date Tue Oct 28 122933 2008 +0100

Modif

commit 0ba7bd8b93ef9ddd8917814bde8cbdaaf9732559

Author Matthieu Herrb ltmatthieuherrblaasfrgt

Date Tue Oct 28 122838 2008 +0100

Initial version

git log --stat

git log -p

Examiner les modifications

Affiche les modifications entre le working set et lrsquoindexou entre lrsquoindex et le repository

echo Good bye gt filetxt

git diff

diff --git afiletxt bfiletxt

index 6bd8f3cc0ee9ab 100644

--- afiletxt

+++ bfiletxt

-1 +1

-Hello Matthieu

+Good bye

git add filetxt

git diff --cached

Marquer une version

Creer un objet de type tag contenant un nom et un commentaireOuvre lrsquoediteur de texte pour saisir le commentaire

git tag -a git-tuto-10

git tag -l

git-tuto-10

Corriger les erreurs revenir a une version saine

Restaurer le working set a partir de la derniere version commiteedetruisant toutes les modifications locales

git reset --hard

Inverser un commit donne

git revert 03bace

Finished one revert

Created commit c333ab5 Revert 3rd version

1 files changed 1 insertions(+) 1 deletions(-)

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Changer de branche

Creer une nouvelle branche

git checkout -b newbranch

Retourner a la branche master

git checkout master

Lister les branches existantes

git branch

master

newbranch

Fusionner les modifications drsquoune autre branche

git merge branch

Fusionne les commits de la branche branch et commite leresultat

2 types de fusion

fast forward pas de conflits seulement des nouveaux commitsa ajouter a la version courante

fusion normale presence de modifications locales utilise unalgorithme de fusion a 3 voies

Gestion des conflits

Un conflit se produit lorsque les modifications a fusionner sontincompatibles avec les modifications locales de la branche cible

Les fichiers avec des conflits contiennent des marqueurs deconflit

Ils ne sont pas automatiquement ajoutes a lrsquoindex

Resoudre le conflict

Ajouter les fichiers a lrsquoindex

Committer le resultat

Outils pour aider a la fusion

Git peut utiliser des outils tiers pour aider a resoudre les conflitskdiff3 tkdiff meld xxdiff opendiff

git config --global mergetool meld

git mergetool

Selectionner des modifications individuelles

Prendre un commit dans une autre branche (une correction de bug)et lrsquoappliquer a la branche courante

git cherry-pick SHA1_HASH

Rebase - rejouer les commits drsquoune branche

Les fusions creent des commits fantomes sous forme de liensdans le graphe des versionsLorsqursquoune branche nrsquoa que quelques commits locaux rebase estpreferable

git rebase master

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Copier un repository

git clone repo

repo un URL du repository a copier Peut etre

un chemin vers un repertoire sur la meme machine

ssh[user]hostpath - utilise GIT dans SSH

githostpath - acces anonyme avec le protocole GIT

httphostpath - acces anonyme avec le protocole HTTP

exercice

repository dinnersshenvol2010traclaasfrgitenvol2010dinner

clonez le repository

creez votre branche personnelle

modifiez le code

utilisez les fichiers de compilation du TP automakearrangez le stylecorrigez des defauts dans le code

commitez vos modifs au fur et a mesure

synchronizez avec le repository central

visualisez les modifs faites par drsquoautres

fusionnez les modifs de plusieurs personnes pour faire unemeilleure version

Mise a jour depuis un repository

git pull

recupere les branches distantes dans le repository local

fusionne la branch distante par defaut dans la branchecouranteet commite le resultat

peut produire un conflit

Resoudre le conflitCommitter le resultat

Branches distantes

git branch -r

liste les branches distantes (originbranch)

Une branche distante peut etre suivie (fusionnee dans les 2 sens)avec

git checkout -t -b newbranch origingnewbranch

Utilisation de rebase avec les branches distantes

fecth recupere les commits distants sans les fusionner

git fetch

git rebase originmaster

Raccourci

git fetch

git rebase originmaster

Envoyer des commits vers un repository

git push

Transfere les commits locaux vers les branches distantes suiviesGenere une erreur si pas a jour (pull ou rebase drsquoabord)

Il faut transferer les tags separement

git push --tags

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Identifier les auteurs

git blame -- filetxt

Pour chaque ligne drsquoun fichier montre le dernier commit et sonauteur

Recherche par dissection drsquoun bug

git bissect permet de rechercher dans lrsquohistorique des commitslrsquoorigine drsquoun bug

git bisect start

git bisect bad la version courante est buguee

git bisect good v2633-rc2 derniere bonne version

Git determine le commit median et lrsquoextraitTester et executer selon le resultat

git bisect good

git bisect bad

A la fin reste le commit responsable du bug

Creer une distribution avec git

(Alternative a la fonction drsquoautomake make dist)

Committer toutes les modifications y compris le nouveau nomde la version

Tagger le resultat

Utiliser archive pour produire une archive qui sera ladistribution source

git tag -a foo-13

git archive --prefix=foo-13 foo-13

| gzip -c - gt foo-13targz

Outils graphiques

gitk

git gui

qgit

giggle

Web browsers cgit gitweb

Integration avec eclipse

Installation

ajouter httpdownloadeclipseorgegitupdatescomme site de telechargement(Preferences rarr InstallUpdates)

installer EGit et JGit (Help rarr Install new software)

Eclipse peut alors gerer lrsquohistorique du projet avec git

Documentationhttpwwweclipseorgegitdocumentation

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix

Configuration initiale

Definir les valeurs par defaut pour les commits

Nom drsquoutilisateur amp adresse mail

Editeur de textes prefere

git config --global --add username Matthieu Herrb

git config --global --add useremail

ltmatthieuherrblaasfrgt

git config --global --add coreeditor emacs -nw

cat ~gitconfig

[user]

name = Matthieu Herrb

email = ltmatthieuherrblaasfrgt

[core]

editor = emacs -nw

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Creer un repository

git init cree un repository vide dans le repertoire courant

mkdir git-tutorial

cd git-tutorial

git init

Initialized empty Git repository in homemhgit-tuturialgit

ls -l git

total 24

-rw-r--r-- 1 mh mh 23 Oct 26 0914 HEAD

-rw-r--r-- 1 mh mh 111 Oct 26 0914 config

-rw-r--r-- 1 mh mh 58 Oct 26 0914 description

drwxr-xr-x 12 mh mh 408 Oct 26 0914 hooks

drwxr-xr-x 3 mh mh 102 Oct 26 0914 info

drwxr-xr-x 4 mh mh 136 Oct 26 0914 objects

drwxr-xr-x 4 mh mh 136 Oct 26 0914 refs

Ajout de fichiers

git add ajoute des fichiers nouveaux ou recemment modifies alrsquoindex

echo Hello World gt filetxt

git add

Consulter lrsquoetat

Affichier la branche courante et lrsquoetat de lrsquoindex

git status

On branch master

Initial commit

Changes to be committed

(use git rm --cached ltfilegt to unstage)

new file filetxt

Committer les modifications

git commit

Created initial commit 0ba7bd8 Initial version

1 files changed 1 insertions(+) 0 deletions(-)

create mode 100644 filetxt

echo Hello Matthieu gt filetxt

git commit -a

Created commit 7fbf4cb Modif

1 files changed 1 insertions(+) 1 deletions(-)

Ouvre lrsquoediteur de textes pour entrer un message de commitpuis enregistre les modifications dans le repository

Regarder en arriere

Plusieurs facons drsquoexaminer lrsquohistorique des modifications

git log

commit 7fbf4cb7c8977061fbfb609016f5414e833a3a1c

Author Matthieu Herrb ltmatthieuherrblaasfrgt

Date Tue Oct 28 122933 2008 +0100

Modif

commit 0ba7bd8b93ef9ddd8917814bde8cbdaaf9732559

Author Matthieu Herrb ltmatthieuherrblaasfrgt

Date Tue Oct 28 122838 2008 +0100

Initial version

git log --stat

git log -p

Examiner les modifications

Affiche les modifications entre le working set et lrsquoindexou entre lrsquoindex et le repository

echo Good bye gt filetxt

git diff

diff --git afiletxt bfiletxt

index 6bd8f3cc0ee9ab 100644

--- afiletxt

+++ bfiletxt

-1 +1

-Hello Matthieu

+Good bye

git add filetxt

git diff --cached

Marquer une version

Creer un objet de type tag contenant un nom et un commentaireOuvre lrsquoediteur de texte pour saisir le commentaire

git tag -a git-tuto-10

git tag -l

git-tuto-10

Corriger les erreurs revenir a une version saine

Restaurer le working set a partir de la derniere version commiteedetruisant toutes les modifications locales

git reset --hard

Inverser un commit donne

git revert 03bace

Finished one revert

Created commit c333ab5 Revert 3rd version

1 files changed 1 insertions(+) 1 deletions(-)

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Changer de branche

Creer une nouvelle branche

git checkout -b newbranch

Retourner a la branche master

git checkout master

Lister les branches existantes

git branch

master

newbranch

Fusionner les modifications drsquoune autre branche

git merge branch

Fusionne les commits de la branche branch et commite leresultat

2 types de fusion

fast forward pas de conflits seulement des nouveaux commitsa ajouter a la version courante

fusion normale presence de modifications locales utilise unalgorithme de fusion a 3 voies

Gestion des conflits

Un conflit se produit lorsque les modifications a fusionner sontincompatibles avec les modifications locales de la branche cible

Les fichiers avec des conflits contiennent des marqueurs deconflit

Ils ne sont pas automatiquement ajoutes a lrsquoindex

Resoudre le conflict

Ajouter les fichiers a lrsquoindex

Committer le resultat

Outils pour aider a la fusion

Git peut utiliser des outils tiers pour aider a resoudre les conflitskdiff3 tkdiff meld xxdiff opendiff

git config --global mergetool meld

git mergetool

Selectionner des modifications individuelles

Prendre un commit dans une autre branche (une correction de bug)et lrsquoappliquer a la branche courante

git cherry-pick SHA1_HASH

Rebase - rejouer les commits drsquoune branche

Les fusions creent des commits fantomes sous forme de liensdans le graphe des versionsLorsqursquoune branche nrsquoa que quelques commits locaux rebase estpreferable

git rebase master

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Copier un repository

git clone repo

repo un URL du repository a copier Peut etre

un chemin vers un repertoire sur la meme machine

ssh[user]hostpath - utilise GIT dans SSH

githostpath - acces anonyme avec le protocole GIT

httphostpath - acces anonyme avec le protocole HTTP

exercice

repository dinnersshenvol2010traclaasfrgitenvol2010dinner

clonez le repository

creez votre branche personnelle

modifiez le code

utilisez les fichiers de compilation du TP automakearrangez le stylecorrigez des defauts dans le code

commitez vos modifs au fur et a mesure

synchronizez avec le repository central

visualisez les modifs faites par drsquoautres

fusionnez les modifs de plusieurs personnes pour faire unemeilleure version

Mise a jour depuis un repository

git pull

recupere les branches distantes dans le repository local

fusionne la branch distante par defaut dans la branchecouranteet commite le resultat

peut produire un conflit

Resoudre le conflitCommitter le resultat

Branches distantes

git branch -r

liste les branches distantes (originbranch)

Une branche distante peut etre suivie (fusionnee dans les 2 sens)avec

git checkout -t -b newbranch origingnewbranch

Utilisation de rebase avec les branches distantes

fecth recupere les commits distants sans les fusionner

git fetch

git rebase originmaster

Raccourci

git fetch

git rebase originmaster

Envoyer des commits vers un repository

git push

Transfere les commits locaux vers les branches distantes suiviesGenere une erreur si pas a jour (pull ou rebase drsquoabord)

Il faut transferer les tags separement

git push --tags

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Identifier les auteurs

git blame -- filetxt

Pour chaque ligne drsquoun fichier montre le dernier commit et sonauteur

Recherche par dissection drsquoun bug

git bissect permet de rechercher dans lrsquohistorique des commitslrsquoorigine drsquoun bug

git bisect start

git bisect bad la version courante est buguee

git bisect good v2633-rc2 derniere bonne version

Git determine le commit median et lrsquoextraitTester et executer selon le resultat

git bisect good

git bisect bad

A la fin reste le commit responsable du bug

Creer une distribution avec git

(Alternative a la fonction drsquoautomake make dist)

Committer toutes les modifications y compris le nouveau nomde la version

Tagger le resultat

Utiliser archive pour produire une archive qui sera ladistribution source

git tag -a foo-13

git archive --prefix=foo-13 foo-13

| gzip -c - gt foo-13targz

Outils graphiques

gitk

git gui

qgit

giggle

Web browsers cgit gitweb

Integration avec eclipse

Installation

ajouter httpdownloadeclipseorgegitupdatescomme site de telechargement(Preferences rarr InstallUpdates)

installer EGit et JGit (Help rarr Install new software)

Eclipse peut alors gerer lrsquohistorique du projet avec git

Documentationhttpwwweclipseorgegitdocumentation

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Creer un repository

git init cree un repository vide dans le repertoire courant

mkdir git-tutorial

cd git-tutorial

git init

Initialized empty Git repository in homemhgit-tuturialgit

ls -l git

total 24

-rw-r--r-- 1 mh mh 23 Oct 26 0914 HEAD

-rw-r--r-- 1 mh mh 111 Oct 26 0914 config

-rw-r--r-- 1 mh mh 58 Oct 26 0914 description

drwxr-xr-x 12 mh mh 408 Oct 26 0914 hooks

drwxr-xr-x 3 mh mh 102 Oct 26 0914 info

drwxr-xr-x 4 mh mh 136 Oct 26 0914 objects

drwxr-xr-x 4 mh mh 136 Oct 26 0914 refs

Ajout de fichiers

git add ajoute des fichiers nouveaux ou recemment modifies alrsquoindex

echo Hello World gt filetxt

git add

Consulter lrsquoetat

Affichier la branche courante et lrsquoetat de lrsquoindex

git status

On branch master

Initial commit

Changes to be committed

(use git rm --cached ltfilegt to unstage)

new file filetxt

Committer les modifications

git commit

Created initial commit 0ba7bd8 Initial version

1 files changed 1 insertions(+) 0 deletions(-)

create mode 100644 filetxt

echo Hello Matthieu gt filetxt

git commit -a

Created commit 7fbf4cb Modif

1 files changed 1 insertions(+) 1 deletions(-)

Ouvre lrsquoediteur de textes pour entrer un message de commitpuis enregistre les modifications dans le repository

Regarder en arriere

Plusieurs facons drsquoexaminer lrsquohistorique des modifications

git log

commit 7fbf4cb7c8977061fbfb609016f5414e833a3a1c

Author Matthieu Herrb ltmatthieuherrblaasfrgt

Date Tue Oct 28 122933 2008 +0100

Modif

commit 0ba7bd8b93ef9ddd8917814bde8cbdaaf9732559

Author Matthieu Herrb ltmatthieuherrblaasfrgt

Date Tue Oct 28 122838 2008 +0100

Initial version

git log --stat

git log -p

Examiner les modifications

Affiche les modifications entre le working set et lrsquoindexou entre lrsquoindex et le repository

echo Good bye gt filetxt

git diff

diff --git afiletxt bfiletxt

index 6bd8f3cc0ee9ab 100644

--- afiletxt

+++ bfiletxt

-1 +1

-Hello Matthieu

+Good bye

git add filetxt

git diff --cached

Marquer une version

Creer un objet de type tag contenant un nom et un commentaireOuvre lrsquoediteur de texte pour saisir le commentaire

git tag -a git-tuto-10

git tag -l

git-tuto-10

Corriger les erreurs revenir a une version saine

Restaurer le working set a partir de la derniere version commiteedetruisant toutes les modifications locales

git reset --hard

Inverser un commit donne

git revert 03bace

Finished one revert

Created commit c333ab5 Revert 3rd version

1 files changed 1 insertions(+) 1 deletions(-)

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Changer de branche

Creer une nouvelle branche

git checkout -b newbranch

Retourner a la branche master

git checkout master

Lister les branches existantes

git branch

master

newbranch

Fusionner les modifications drsquoune autre branche

git merge branch

Fusionne les commits de la branche branch et commite leresultat

2 types de fusion

fast forward pas de conflits seulement des nouveaux commitsa ajouter a la version courante

fusion normale presence de modifications locales utilise unalgorithme de fusion a 3 voies

Gestion des conflits

Un conflit se produit lorsque les modifications a fusionner sontincompatibles avec les modifications locales de la branche cible

Les fichiers avec des conflits contiennent des marqueurs deconflit

Ils ne sont pas automatiquement ajoutes a lrsquoindex

Resoudre le conflict

Ajouter les fichiers a lrsquoindex

Committer le resultat

Outils pour aider a la fusion

Git peut utiliser des outils tiers pour aider a resoudre les conflitskdiff3 tkdiff meld xxdiff opendiff

git config --global mergetool meld

git mergetool

Selectionner des modifications individuelles

Prendre un commit dans une autre branche (une correction de bug)et lrsquoappliquer a la branche courante

git cherry-pick SHA1_HASH

Rebase - rejouer les commits drsquoune branche

Les fusions creent des commits fantomes sous forme de liensdans le graphe des versionsLorsqursquoune branche nrsquoa que quelques commits locaux rebase estpreferable

git rebase master

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Copier un repository

git clone repo

repo un URL du repository a copier Peut etre

un chemin vers un repertoire sur la meme machine

ssh[user]hostpath - utilise GIT dans SSH

githostpath - acces anonyme avec le protocole GIT

httphostpath - acces anonyme avec le protocole HTTP

exercice

repository dinnersshenvol2010traclaasfrgitenvol2010dinner

clonez le repository

creez votre branche personnelle

modifiez le code

utilisez les fichiers de compilation du TP automakearrangez le stylecorrigez des defauts dans le code

commitez vos modifs au fur et a mesure

synchronizez avec le repository central

visualisez les modifs faites par drsquoautres

fusionnez les modifs de plusieurs personnes pour faire unemeilleure version

Mise a jour depuis un repository

git pull

recupere les branches distantes dans le repository local

fusionne la branch distante par defaut dans la branchecouranteet commite le resultat

peut produire un conflit

Resoudre le conflitCommitter le resultat

Branches distantes

git branch -r

liste les branches distantes (originbranch)

Une branche distante peut etre suivie (fusionnee dans les 2 sens)avec

git checkout -t -b newbranch origingnewbranch

Utilisation de rebase avec les branches distantes

fecth recupere les commits distants sans les fusionner

git fetch

git rebase originmaster

Raccourci

git fetch

git rebase originmaster

Envoyer des commits vers un repository

git push

Transfere les commits locaux vers les branches distantes suiviesGenere une erreur si pas a jour (pull ou rebase drsquoabord)

Il faut transferer les tags separement

git push --tags

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Identifier les auteurs

git blame -- filetxt

Pour chaque ligne drsquoun fichier montre le dernier commit et sonauteur

Recherche par dissection drsquoun bug

git bissect permet de rechercher dans lrsquohistorique des commitslrsquoorigine drsquoun bug

git bisect start

git bisect bad la version courante est buguee

git bisect good v2633-rc2 derniere bonne version

Git determine le commit median et lrsquoextraitTester et executer selon le resultat

git bisect good

git bisect bad

A la fin reste le commit responsable du bug

Creer une distribution avec git

(Alternative a la fonction drsquoautomake make dist)

Committer toutes les modifications y compris le nouveau nomde la version

Tagger le resultat

Utiliser archive pour produire une archive qui sera ladistribution source

git tag -a foo-13

git archive --prefix=foo-13 foo-13

| gzip -c - gt foo-13targz

Outils graphiques

gitk

git gui

qgit

giggle

Web browsers cgit gitweb

Integration avec eclipse

Installation

ajouter httpdownloadeclipseorgegitupdatescomme site de telechargement(Preferences rarr InstallUpdates)

installer EGit et JGit (Help rarr Install new software)

Eclipse peut alors gerer lrsquohistorique du projet avec git

Documentationhttpwwweclipseorgegitdocumentation

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix

Creer un repository

git init cree un repository vide dans le repertoire courant

mkdir git-tutorial

cd git-tutorial

git init

Initialized empty Git repository in homemhgit-tuturialgit

ls -l git

total 24

-rw-r--r-- 1 mh mh 23 Oct 26 0914 HEAD

-rw-r--r-- 1 mh mh 111 Oct 26 0914 config

-rw-r--r-- 1 mh mh 58 Oct 26 0914 description

drwxr-xr-x 12 mh mh 408 Oct 26 0914 hooks

drwxr-xr-x 3 mh mh 102 Oct 26 0914 info

drwxr-xr-x 4 mh mh 136 Oct 26 0914 objects

drwxr-xr-x 4 mh mh 136 Oct 26 0914 refs

Ajout de fichiers

git add ajoute des fichiers nouveaux ou recemment modifies alrsquoindex

echo Hello World gt filetxt

git add

Consulter lrsquoetat

Affichier la branche courante et lrsquoetat de lrsquoindex

git status

On branch master

Initial commit

Changes to be committed

(use git rm --cached ltfilegt to unstage)

new file filetxt

Committer les modifications

git commit

Created initial commit 0ba7bd8 Initial version

1 files changed 1 insertions(+) 0 deletions(-)

create mode 100644 filetxt

echo Hello Matthieu gt filetxt

git commit -a

Created commit 7fbf4cb Modif

1 files changed 1 insertions(+) 1 deletions(-)

Ouvre lrsquoediteur de textes pour entrer un message de commitpuis enregistre les modifications dans le repository

Regarder en arriere

Plusieurs facons drsquoexaminer lrsquohistorique des modifications

git log

commit 7fbf4cb7c8977061fbfb609016f5414e833a3a1c

Author Matthieu Herrb ltmatthieuherrblaasfrgt

Date Tue Oct 28 122933 2008 +0100

Modif

commit 0ba7bd8b93ef9ddd8917814bde8cbdaaf9732559

Author Matthieu Herrb ltmatthieuherrblaasfrgt

Date Tue Oct 28 122838 2008 +0100

Initial version

git log --stat

git log -p

Examiner les modifications

Affiche les modifications entre le working set et lrsquoindexou entre lrsquoindex et le repository

echo Good bye gt filetxt

git diff

diff --git afiletxt bfiletxt

index 6bd8f3cc0ee9ab 100644

--- afiletxt

+++ bfiletxt

-1 +1

-Hello Matthieu

+Good bye

git add filetxt

git diff --cached

Marquer une version

Creer un objet de type tag contenant un nom et un commentaireOuvre lrsquoediteur de texte pour saisir le commentaire

git tag -a git-tuto-10

git tag -l

git-tuto-10

Corriger les erreurs revenir a une version saine

Restaurer le working set a partir de la derniere version commiteedetruisant toutes les modifications locales

git reset --hard

Inverser un commit donne

git revert 03bace

Finished one revert

Created commit c333ab5 Revert 3rd version

1 files changed 1 insertions(+) 1 deletions(-)

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Changer de branche

Creer une nouvelle branche

git checkout -b newbranch

Retourner a la branche master

git checkout master

Lister les branches existantes

git branch

master

newbranch

Fusionner les modifications drsquoune autre branche

git merge branch

Fusionne les commits de la branche branch et commite leresultat

2 types de fusion

fast forward pas de conflits seulement des nouveaux commitsa ajouter a la version courante

fusion normale presence de modifications locales utilise unalgorithme de fusion a 3 voies

Gestion des conflits

Un conflit se produit lorsque les modifications a fusionner sontincompatibles avec les modifications locales de la branche cible

Les fichiers avec des conflits contiennent des marqueurs deconflit

Ils ne sont pas automatiquement ajoutes a lrsquoindex

Resoudre le conflict

Ajouter les fichiers a lrsquoindex

Committer le resultat

Outils pour aider a la fusion

Git peut utiliser des outils tiers pour aider a resoudre les conflitskdiff3 tkdiff meld xxdiff opendiff

git config --global mergetool meld

git mergetool

Selectionner des modifications individuelles

Prendre un commit dans une autre branche (une correction de bug)et lrsquoappliquer a la branche courante

git cherry-pick SHA1_HASH

Rebase - rejouer les commits drsquoune branche

Les fusions creent des commits fantomes sous forme de liensdans le graphe des versionsLorsqursquoune branche nrsquoa que quelques commits locaux rebase estpreferable

git rebase master

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Copier un repository

git clone repo

repo un URL du repository a copier Peut etre

un chemin vers un repertoire sur la meme machine

ssh[user]hostpath - utilise GIT dans SSH

githostpath - acces anonyme avec le protocole GIT

httphostpath - acces anonyme avec le protocole HTTP

exercice

repository dinnersshenvol2010traclaasfrgitenvol2010dinner

clonez le repository

creez votre branche personnelle

modifiez le code

utilisez les fichiers de compilation du TP automakearrangez le stylecorrigez des defauts dans le code

commitez vos modifs au fur et a mesure

synchronizez avec le repository central

visualisez les modifs faites par drsquoautres

fusionnez les modifs de plusieurs personnes pour faire unemeilleure version

Mise a jour depuis un repository

git pull

recupere les branches distantes dans le repository local

fusionne la branch distante par defaut dans la branchecouranteet commite le resultat

peut produire un conflit

Resoudre le conflitCommitter le resultat

Branches distantes

git branch -r

liste les branches distantes (originbranch)

Une branche distante peut etre suivie (fusionnee dans les 2 sens)avec

git checkout -t -b newbranch origingnewbranch

Utilisation de rebase avec les branches distantes

fecth recupere les commits distants sans les fusionner

git fetch

git rebase originmaster

Raccourci

git fetch

git rebase originmaster

Envoyer des commits vers un repository

git push

Transfere les commits locaux vers les branches distantes suiviesGenere une erreur si pas a jour (pull ou rebase drsquoabord)

Il faut transferer les tags separement

git push --tags

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Identifier les auteurs

git blame -- filetxt

Pour chaque ligne drsquoun fichier montre le dernier commit et sonauteur

Recherche par dissection drsquoun bug

git bissect permet de rechercher dans lrsquohistorique des commitslrsquoorigine drsquoun bug

git bisect start

git bisect bad la version courante est buguee

git bisect good v2633-rc2 derniere bonne version

Git determine le commit median et lrsquoextraitTester et executer selon le resultat

git bisect good

git bisect bad

A la fin reste le commit responsable du bug

Creer une distribution avec git

(Alternative a la fonction drsquoautomake make dist)

Committer toutes les modifications y compris le nouveau nomde la version

Tagger le resultat

Utiliser archive pour produire une archive qui sera ladistribution source

git tag -a foo-13

git archive --prefix=foo-13 foo-13

| gzip -c - gt foo-13targz

Outils graphiques

gitk

git gui

qgit

giggle

Web browsers cgit gitweb

Integration avec eclipse

Installation

ajouter httpdownloadeclipseorgegitupdatescomme site de telechargement(Preferences rarr InstallUpdates)

installer EGit et JGit (Help rarr Install new software)

Eclipse peut alors gerer lrsquohistorique du projet avec git

Documentationhttpwwweclipseorgegitdocumentation

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix

Ajout de fichiers

git add ajoute des fichiers nouveaux ou recemment modifies alrsquoindex

echo Hello World gt filetxt

git add

Consulter lrsquoetat

Affichier la branche courante et lrsquoetat de lrsquoindex

git status

On branch master

Initial commit

Changes to be committed

(use git rm --cached ltfilegt to unstage)

new file filetxt

Committer les modifications

git commit

Created initial commit 0ba7bd8 Initial version

1 files changed 1 insertions(+) 0 deletions(-)

create mode 100644 filetxt

echo Hello Matthieu gt filetxt

git commit -a

Created commit 7fbf4cb Modif

1 files changed 1 insertions(+) 1 deletions(-)

Ouvre lrsquoediteur de textes pour entrer un message de commitpuis enregistre les modifications dans le repository

Regarder en arriere

Plusieurs facons drsquoexaminer lrsquohistorique des modifications

git log

commit 7fbf4cb7c8977061fbfb609016f5414e833a3a1c

Author Matthieu Herrb ltmatthieuherrblaasfrgt

Date Tue Oct 28 122933 2008 +0100

Modif

commit 0ba7bd8b93ef9ddd8917814bde8cbdaaf9732559

Author Matthieu Herrb ltmatthieuherrblaasfrgt

Date Tue Oct 28 122838 2008 +0100

Initial version

git log --stat

git log -p

Examiner les modifications

Affiche les modifications entre le working set et lrsquoindexou entre lrsquoindex et le repository

echo Good bye gt filetxt

git diff

diff --git afiletxt bfiletxt

index 6bd8f3cc0ee9ab 100644

--- afiletxt

+++ bfiletxt

-1 +1

-Hello Matthieu

+Good bye

git add filetxt

git diff --cached

Marquer une version

Creer un objet de type tag contenant un nom et un commentaireOuvre lrsquoediteur de texte pour saisir le commentaire

git tag -a git-tuto-10

git tag -l

git-tuto-10

Corriger les erreurs revenir a une version saine

Restaurer le working set a partir de la derniere version commiteedetruisant toutes les modifications locales

git reset --hard

Inverser un commit donne

git revert 03bace

Finished one revert

Created commit c333ab5 Revert 3rd version

1 files changed 1 insertions(+) 1 deletions(-)

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Changer de branche

Creer une nouvelle branche

git checkout -b newbranch

Retourner a la branche master

git checkout master

Lister les branches existantes

git branch

master

newbranch

Fusionner les modifications drsquoune autre branche

git merge branch

Fusionne les commits de la branche branch et commite leresultat

2 types de fusion

fast forward pas de conflits seulement des nouveaux commitsa ajouter a la version courante

fusion normale presence de modifications locales utilise unalgorithme de fusion a 3 voies

Gestion des conflits

Un conflit se produit lorsque les modifications a fusionner sontincompatibles avec les modifications locales de la branche cible

Les fichiers avec des conflits contiennent des marqueurs deconflit

Ils ne sont pas automatiquement ajoutes a lrsquoindex

Resoudre le conflict

Ajouter les fichiers a lrsquoindex

Committer le resultat

Outils pour aider a la fusion

Git peut utiliser des outils tiers pour aider a resoudre les conflitskdiff3 tkdiff meld xxdiff opendiff

git config --global mergetool meld

git mergetool

Selectionner des modifications individuelles

Prendre un commit dans une autre branche (une correction de bug)et lrsquoappliquer a la branche courante

git cherry-pick SHA1_HASH

Rebase - rejouer les commits drsquoune branche

Les fusions creent des commits fantomes sous forme de liensdans le graphe des versionsLorsqursquoune branche nrsquoa que quelques commits locaux rebase estpreferable

git rebase master

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Copier un repository

git clone repo

repo un URL du repository a copier Peut etre

un chemin vers un repertoire sur la meme machine

ssh[user]hostpath - utilise GIT dans SSH

githostpath - acces anonyme avec le protocole GIT

httphostpath - acces anonyme avec le protocole HTTP

exercice

repository dinnersshenvol2010traclaasfrgitenvol2010dinner

clonez le repository

creez votre branche personnelle

modifiez le code

utilisez les fichiers de compilation du TP automakearrangez le stylecorrigez des defauts dans le code

commitez vos modifs au fur et a mesure

synchronizez avec le repository central

visualisez les modifs faites par drsquoautres

fusionnez les modifs de plusieurs personnes pour faire unemeilleure version

Mise a jour depuis un repository

git pull

recupere les branches distantes dans le repository local

fusionne la branch distante par defaut dans la branchecouranteet commite le resultat

peut produire un conflit

Resoudre le conflitCommitter le resultat

Branches distantes

git branch -r

liste les branches distantes (originbranch)

Une branche distante peut etre suivie (fusionnee dans les 2 sens)avec

git checkout -t -b newbranch origingnewbranch

Utilisation de rebase avec les branches distantes

fecth recupere les commits distants sans les fusionner

git fetch

git rebase originmaster

Raccourci

git fetch

git rebase originmaster

Envoyer des commits vers un repository

git push

Transfere les commits locaux vers les branches distantes suiviesGenere une erreur si pas a jour (pull ou rebase drsquoabord)

Il faut transferer les tags separement

git push --tags

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Identifier les auteurs

git blame -- filetxt

Pour chaque ligne drsquoun fichier montre le dernier commit et sonauteur

Recherche par dissection drsquoun bug

git bissect permet de rechercher dans lrsquohistorique des commitslrsquoorigine drsquoun bug

git bisect start

git bisect bad la version courante est buguee

git bisect good v2633-rc2 derniere bonne version

Git determine le commit median et lrsquoextraitTester et executer selon le resultat

git bisect good

git bisect bad

A la fin reste le commit responsable du bug

Creer une distribution avec git

(Alternative a la fonction drsquoautomake make dist)

Committer toutes les modifications y compris le nouveau nomde la version

Tagger le resultat

Utiliser archive pour produire une archive qui sera ladistribution source

git tag -a foo-13

git archive --prefix=foo-13 foo-13

| gzip -c - gt foo-13targz

Outils graphiques

gitk

git gui

qgit

giggle

Web browsers cgit gitweb

Integration avec eclipse

Installation

ajouter httpdownloadeclipseorgegitupdatescomme site de telechargement(Preferences rarr InstallUpdates)

installer EGit et JGit (Help rarr Install new software)

Eclipse peut alors gerer lrsquohistorique du projet avec git

Documentationhttpwwweclipseorgegitdocumentation

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix

Consulter lrsquoetat

Affichier la branche courante et lrsquoetat de lrsquoindex

git status

On branch master

Initial commit

Changes to be committed

(use git rm --cached ltfilegt to unstage)

new file filetxt

Committer les modifications

git commit

Created initial commit 0ba7bd8 Initial version

1 files changed 1 insertions(+) 0 deletions(-)

create mode 100644 filetxt

echo Hello Matthieu gt filetxt

git commit -a

Created commit 7fbf4cb Modif

1 files changed 1 insertions(+) 1 deletions(-)

Ouvre lrsquoediteur de textes pour entrer un message de commitpuis enregistre les modifications dans le repository

Regarder en arriere

Plusieurs facons drsquoexaminer lrsquohistorique des modifications

git log

commit 7fbf4cb7c8977061fbfb609016f5414e833a3a1c

Author Matthieu Herrb ltmatthieuherrblaasfrgt

Date Tue Oct 28 122933 2008 +0100

Modif

commit 0ba7bd8b93ef9ddd8917814bde8cbdaaf9732559

Author Matthieu Herrb ltmatthieuherrblaasfrgt

Date Tue Oct 28 122838 2008 +0100

Initial version

git log --stat

git log -p

Examiner les modifications

Affiche les modifications entre le working set et lrsquoindexou entre lrsquoindex et le repository

echo Good bye gt filetxt

git diff

diff --git afiletxt bfiletxt

index 6bd8f3cc0ee9ab 100644

--- afiletxt

+++ bfiletxt

-1 +1

-Hello Matthieu

+Good bye

git add filetxt

git diff --cached

Marquer une version

Creer un objet de type tag contenant un nom et un commentaireOuvre lrsquoediteur de texte pour saisir le commentaire

git tag -a git-tuto-10

git tag -l

git-tuto-10

Corriger les erreurs revenir a une version saine

Restaurer le working set a partir de la derniere version commiteedetruisant toutes les modifications locales

git reset --hard

Inverser un commit donne

git revert 03bace

Finished one revert

Created commit c333ab5 Revert 3rd version

1 files changed 1 insertions(+) 1 deletions(-)

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Changer de branche

Creer une nouvelle branche

git checkout -b newbranch

Retourner a la branche master

git checkout master

Lister les branches existantes

git branch

master

newbranch

Fusionner les modifications drsquoune autre branche

git merge branch

Fusionne les commits de la branche branch et commite leresultat

2 types de fusion

fast forward pas de conflits seulement des nouveaux commitsa ajouter a la version courante

fusion normale presence de modifications locales utilise unalgorithme de fusion a 3 voies

Gestion des conflits

Un conflit se produit lorsque les modifications a fusionner sontincompatibles avec les modifications locales de la branche cible

Les fichiers avec des conflits contiennent des marqueurs deconflit

Ils ne sont pas automatiquement ajoutes a lrsquoindex

Resoudre le conflict

Ajouter les fichiers a lrsquoindex

Committer le resultat

Outils pour aider a la fusion

Git peut utiliser des outils tiers pour aider a resoudre les conflitskdiff3 tkdiff meld xxdiff opendiff

git config --global mergetool meld

git mergetool

Selectionner des modifications individuelles

Prendre un commit dans une autre branche (une correction de bug)et lrsquoappliquer a la branche courante

git cherry-pick SHA1_HASH

Rebase - rejouer les commits drsquoune branche

Les fusions creent des commits fantomes sous forme de liensdans le graphe des versionsLorsqursquoune branche nrsquoa que quelques commits locaux rebase estpreferable

git rebase master

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Copier un repository

git clone repo

repo un URL du repository a copier Peut etre

un chemin vers un repertoire sur la meme machine

ssh[user]hostpath - utilise GIT dans SSH

githostpath - acces anonyme avec le protocole GIT

httphostpath - acces anonyme avec le protocole HTTP

exercice

repository dinnersshenvol2010traclaasfrgitenvol2010dinner

clonez le repository

creez votre branche personnelle

modifiez le code

utilisez les fichiers de compilation du TP automakearrangez le stylecorrigez des defauts dans le code

commitez vos modifs au fur et a mesure

synchronizez avec le repository central

visualisez les modifs faites par drsquoautres

fusionnez les modifs de plusieurs personnes pour faire unemeilleure version

Mise a jour depuis un repository

git pull

recupere les branches distantes dans le repository local

fusionne la branch distante par defaut dans la branchecouranteet commite le resultat

peut produire un conflit

Resoudre le conflitCommitter le resultat

Branches distantes

git branch -r

liste les branches distantes (originbranch)

Une branche distante peut etre suivie (fusionnee dans les 2 sens)avec

git checkout -t -b newbranch origingnewbranch

Utilisation de rebase avec les branches distantes

fecth recupere les commits distants sans les fusionner

git fetch

git rebase originmaster

Raccourci

git fetch

git rebase originmaster

Envoyer des commits vers un repository

git push

Transfere les commits locaux vers les branches distantes suiviesGenere une erreur si pas a jour (pull ou rebase drsquoabord)

Il faut transferer les tags separement

git push --tags

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Identifier les auteurs

git blame -- filetxt

Pour chaque ligne drsquoun fichier montre le dernier commit et sonauteur

Recherche par dissection drsquoun bug

git bissect permet de rechercher dans lrsquohistorique des commitslrsquoorigine drsquoun bug

git bisect start

git bisect bad la version courante est buguee

git bisect good v2633-rc2 derniere bonne version

Git determine le commit median et lrsquoextraitTester et executer selon le resultat

git bisect good

git bisect bad

A la fin reste le commit responsable du bug

Creer une distribution avec git

(Alternative a la fonction drsquoautomake make dist)

Committer toutes les modifications y compris le nouveau nomde la version

Tagger le resultat

Utiliser archive pour produire une archive qui sera ladistribution source

git tag -a foo-13

git archive --prefix=foo-13 foo-13

| gzip -c - gt foo-13targz

Outils graphiques

gitk

git gui

qgit

giggle

Web browsers cgit gitweb

Integration avec eclipse

Installation

ajouter httpdownloadeclipseorgegitupdatescomme site de telechargement(Preferences rarr InstallUpdates)

installer EGit et JGit (Help rarr Install new software)

Eclipse peut alors gerer lrsquohistorique du projet avec git

Documentationhttpwwweclipseorgegitdocumentation

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix

Committer les modifications

git commit

Created initial commit 0ba7bd8 Initial version

1 files changed 1 insertions(+) 0 deletions(-)

create mode 100644 filetxt

echo Hello Matthieu gt filetxt

git commit -a

Created commit 7fbf4cb Modif

1 files changed 1 insertions(+) 1 deletions(-)

Ouvre lrsquoediteur de textes pour entrer un message de commitpuis enregistre les modifications dans le repository

Regarder en arriere

Plusieurs facons drsquoexaminer lrsquohistorique des modifications

git log

commit 7fbf4cb7c8977061fbfb609016f5414e833a3a1c

Author Matthieu Herrb ltmatthieuherrblaasfrgt

Date Tue Oct 28 122933 2008 +0100

Modif

commit 0ba7bd8b93ef9ddd8917814bde8cbdaaf9732559

Author Matthieu Herrb ltmatthieuherrblaasfrgt

Date Tue Oct 28 122838 2008 +0100

Initial version

git log --stat

git log -p

Examiner les modifications

Affiche les modifications entre le working set et lrsquoindexou entre lrsquoindex et le repository

echo Good bye gt filetxt

git diff

diff --git afiletxt bfiletxt

index 6bd8f3cc0ee9ab 100644

--- afiletxt

+++ bfiletxt

-1 +1

-Hello Matthieu

+Good bye

git add filetxt

git diff --cached

Marquer une version

Creer un objet de type tag contenant un nom et un commentaireOuvre lrsquoediteur de texte pour saisir le commentaire

git tag -a git-tuto-10

git tag -l

git-tuto-10

Corriger les erreurs revenir a une version saine

Restaurer le working set a partir de la derniere version commiteedetruisant toutes les modifications locales

git reset --hard

Inverser un commit donne

git revert 03bace

Finished one revert

Created commit c333ab5 Revert 3rd version

1 files changed 1 insertions(+) 1 deletions(-)

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Changer de branche

Creer une nouvelle branche

git checkout -b newbranch

Retourner a la branche master

git checkout master

Lister les branches existantes

git branch

master

newbranch

Fusionner les modifications drsquoune autre branche

git merge branch

Fusionne les commits de la branche branch et commite leresultat

2 types de fusion

fast forward pas de conflits seulement des nouveaux commitsa ajouter a la version courante

fusion normale presence de modifications locales utilise unalgorithme de fusion a 3 voies

Gestion des conflits

Un conflit se produit lorsque les modifications a fusionner sontincompatibles avec les modifications locales de la branche cible

Les fichiers avec des conflits contiennent des marqueurs deconflit

Ils ne sont pas automatiquement ajoutes a lrsquoindex

Resoudre le conflict

Ajouter les fichiers a lrsquoindex

Committer le resultat

Outils pour aider a la fusion

Git peut utiliser des outils tiers pour aider a resoudre les conflitskdiff3 tkdiff meld xxdiff opendiff

git config --global mergetool meld

git mergetool

Selectionner des modifications individuelles

Prendre un commit dans une autre branche (une correction de bug)et lrsquoappliquer a la branche courante

git cherry-pick SHA1_HASH

Rebase - rejouer les commits drsquoune branche

Les fusions creent des commits fantomes sous forme de liensdans le graphe des versionsLorsqursquoune branche nrsquoa que quelques commits locaux rebase estpreferable

git rebase master

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Copier un repository

git clone repo

repo un URL du repository a copier Peut etre

un chemin vers un repertoire sur la meme machine

ssh[user]hostpath - utilise GIT dans SSH

githostpath - acces anonyme avec le protocole GIT

httphostpath - acces anonyme avec le protocole HTTP

exercice

repository dinnersshenvol2010traclaasfrgitenvol2010dinner

clonez le repository

creez votre branche personnelle

modifiez le code

utilisez les fichiers de compilation du TP automakearrangez le stylecorrigez des defauts dans le code

commitez vos modifs au fur et a mesure

synchronizez avec le repository central

visualisez les modifs faites par drsquoautres

fusionnez les modifs de plusieurs personnes pour faire unemeilleure version

Mise a jour depuis un repository

git pull

recupere les branches distantes dans le repository local

fusionne la branch distante par defaut dans la branchecouranteet commite le resultat

peut produire un conflit

Resoudre le conflitCommitter le resultat

Branches distantes

git branch -r

liste les branches distantes (originbranch)

Une branche distante peut etre suivie (fusionnee dans les 2 sens)avec

git checkout -t -b newbranch origingnewbranch

Utilisation de rebase avec les branches distantes

fecth recupere les commits distants sans les fusionner

git fetch

git rebase originmaster

Raccourci

git fetch

git rebase originmaster

Envoyer des commits vers un repository

git push

Transfere les commits locaux vers les branches distantes suiviesGenere une erreur si pas a jour (pull ou rebase drsquoabord)

Il faut transferer les tags separement

git push --tags

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Identifier les auteurs

git blame -- filetxt

Pour chaque ligne drsquoun fichier montre le dernier commit et sonauteur

Recherche par dissection drsquoun bug

git bissect permet de rechercher dans lrsquohistorique des commitslrsquoorigine drsquoun bug

git bisect start

git bisect bad la version courante est buguee

git bisect good v2633-rc2 derniere bonne version

Git determine le commit median et lrsquoextraitTester et executer selon le resultat

git bisect good

git bisect bad

A la fin reste le commit responsable du bug

Creer une distribution avec git

(Alternative a la fonction drsquoautomake make dist)

Committer toutes les modifications y compris le nouveau nomde la version

Tagger le resultat

Utiliser archive pour produire une archive qui sera ladistribution source

git tag -a foo-13

git archive --prefix=foo-13 foo-13

| gzip -c - gt foo-13targz

Outils graphiques

gitk

git gui

qgit

giggle

Web browsers cgit gitweb

Integration avec eclipse

Installation

ajouter httpdownloadeclipseorgegitupdatescomme site de telechargement(Preferences rarr InstallUpdates)

installer EGit et JGit (Help rarr Install new software)

Eclipse peut alors gerer lrsquohistorique du projet avec git

Documentationhttpwwweclipseorgegitdocumentation

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix

Regarder en arriere

Plusieurs facons drsquoexaminer lrsquohistorique des modifications

git log

commit 7fbf4cb7c8977061fbfb609016f5414e833a3a1c

Author Matthieu Herrb ltmatthieuherrblaasfrgt

Date Tue Oct 28 122933 2008 +0100

Modif

commit 0ba7bd8b93ef9ddd8917814bde8cbdaaf9732559

Author Matthieu Herrb ltmatthieuherrblaasfrgt

Date Tue Oct 28 122838 2008 +0100

Initial version

git log --stat

git log -p

Examiner les modifications

Affiche les modifications entre le working set et lrsquoindexou entre lrsquoindex et le repository

echo Good bye gt filetxt

git diff

diff --git afiletxt bfiletxt

index 6bd8f3cc0ee9ab 100644

--- afiletxt

+++ bfiletxt

-1 +1

-Hello Matthieu

+Good bye

git add filetxt

git diff --cached

Marquer une version

Creer un objet de type tag contenant un nom et un commentaireOuvre lrsquoediteur de texte pour saisir le commentaire

git tag -a git-tuto-10

git tag -l

git-tuto-10

Corriger les erreurs revenir a une version saine

Restaurer le working set a partir de la derniere version commiteedetruisant toutes les modifications locales

git reset --hard

Inverser un commit donne

git revert 03bace

Finished one revert

Created commit c333ab5 Revert 3rd version

1 files changed 1 insertions(+) 1 deletions(-)

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Changer de branche

Creer une nouvelle branche

git checkout -b newbranch

Retourner a la branche master

git checkout master

Lister les branches existantes

git branch

master

newbranch

Fusionner les modifications drsquoune autre branche

git merge branch

Fusionne les commits de la branche branch et commite leresultat

2 types de fusion

fast forward pas de conflits seulement des nouveaux commitsa ajouter a la version courante

fusion normale presence de modifications locales utilise unalgorithme de fusion a 3 voies

Gestion des conflits

Un conflit se produit lorsque les modifications a fusionner sontincompatibles avec les modifications locales de la branche cible

Les fichiers avec des conflits contiennent des marqueurs deconflit

Ils ne sont pas automatiquement ajoutes a lrsquoindex

Resoudre le conflict

Ajouter les fichiers a lrsquoindex

Committer le resultat

Outils pour aider a la fusion

Git peut utiliser des outils tiers pour aider a resoudre les conflitskdiff3 tkdiff meld xxdiff opendiff

git config --global mergetool meld

git mergetool

Selectionner des modifications individuelles

Prendre un commit dans une autre branche (une correction de bug)et lrsquoappliquer a la branche courante

git cherry-pick SHA1_HASH

Rebase - rejouer les commits drsquoune branche

Les fusions creent des commits fantomes sous forme de liensdans le graphe des versionsLorsqursquoune branche nrsquoa que quelques commits locaux rebase estpreferable

git rebase master

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Copier un repository

git clone repo

repo un URL du repository a copier Peut etre

un chemin vers un repertoire sur la meme machine

ssh[user]hostpath - utilise GIT dans SSH

githostpath - acces anonyme avec le protocole GIT

httphostpath - acces anonyme avec le protocole HTTP

exercice

repository dinnersshenvol2010traclaasfrgitenvol2010dinner

clonez le repository

creez votre branche personnelle

modifiez le code

utilisez les fichiers de compilation du TP automakearrangez le stylecorrigez des defauts dans le code

commitez vos modifs au fur et a mesure

synchronizez avec le repository central

visualisez les modifs faites par drsquoautres

fusionnez les modifs de plusieurs personnes pour faire unemeilleure version

Mise a jour depuis un repository

git pull

recupere les branches distantes dans le repository local

fusionne la branch distante par defaut dans la branchecouranteet commite le resultat

peut produire un conflit

Resoudre le conflitCommitter le resultat

Branches distantes

git branch -r

liste les branches distantes (originbranch)

Une branche distante peut etre suivie (fusionnee dans les 2 sens)avec

git checkout -t -b newbranch origingnewbranch

Utilisation de rebase avec les branches distantes

fecth recupere les commits distants sans les fusionner

git fetch

git rebase originmaster

Raccourci

git fetch

git rebase originmaster

Envoyer des commits vers un repository

git push

Transfere les commits locaux vers les branches distantes suiviesGenere une erreur si pas a jour (pull ou rebase drsquoabord)

Il faut transferer les tags separement

git push --tags

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Identifier les auteurs

git blame -- filetxt

Pour chaque ligne drsquoun fichier montre le dernier commit et sonauteur

Recherche par dissection drsquoun bug

git bissect permet de rechercher dans lrsquohistorique des commitslrsquoorigine drsquoun bug

git bisect start

git bisect bad la version courante est buguee

git bisect good v2633-rc2 derniere bonne version

Git determine le commit median et lrsquoextraitTester et executer selon le resultat

git bisect good

git bisect bad

A la fin reste le commit responsable du bug

Creer une distribution avec git

(Alternative a la fonction drsquoautomake make dist)

Committer toutes les modifications y compris le nouveau nomde la version

Tagger le resultat

Utiliser archive pour produire une archive qui sera ladistribution source

git tag -a foo-13

git archive --prefix=foo-13 foo-13

| gzip -c - gt foo-13targz

Outils graphiques

gitk

git gui

qgit

giggle

Web browsers cgit gitweb

Integration avec eclipse

Installation

ajouter httpdownloadeclipseorgegitupdatescomme site de telechargement(Preferences rarr InstallUpdates)

installer EGit et JGit (Help rarr Install new software)

Eclipse peut alors gerer lrsquohistorique du projet avec git

Documentationhttpwwweclipseorgegitdocumentation

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix

Examiner les modifications

Affiche les modifications entre le working set et lrsquoindexou entre lrsquoindex et le repository

echo Good bye gt filetxt

git diff

diff --git afiletxt bfiletxt

index 6bd8f3cc0ee9ab 100644

--- afiletxt

+++ bfiletxt

-1 +1

-Hello Matthieu

+Good bye

git add filetxt

git diff --cached

Marquer une version

Creer un objet de type tag contenant un nom et un commentaireOuvre lrsquoediteur de texte pour saisir le commentaire

git tag -a git-tuto-10

git tag -l

git-tuto-10

Corriger les erreurs revenir a une version saine

Restaurer le working set a partir de la derniere version commiteedetruisant toutes les modifications locales

git reset --hard

Inverser un commit donne

git revert 03bace

Finished one revert

Created commit c333ab5 Revert 3rd version

1 files changed 1 insertions(+) 1 deletions(-)

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Changer de branche

Creer une nouvelle branche

git checkout -b newbranch

Retourner a la branche master

git checkout master

Lister les branches existantes

git branch

master

newbranch

Fusionner les modifications drsquoune autre branche

git merge branch

Fusionne les commits de la branche branch et commite leresultat

2 types de fusion

fast forward pas de conflits seulement des nouveaux commitsa ajouter a la version courante

fusion normale presence de modifications locales utilise unalgorithme de fusion a 3 voies

Gestion des conflits

Un conflit se produit lorsque les modifications a fusionner sontincompatibles avec les modifications locales de la branche cible

Les fichiers avec des conflits contiennent des marqueurs deconflit

Ils ne sont pas automatiquement ajoutes a lrsquoindex

Resoudre le conflict

Ajouter les fichiers a lrsquoindex

Committer le resultat

Outils pour aider a la fusion

Git peut utiliser des outils tiers pour aider a resoudre les conflitskdiff3 tkdiff meld xxdiff opendiff

git config --global mergetool meld

git mergetool

Selectionner des modifications individuelles

Prendre un commit dans une autre branche (une correction de bug)et lrsquoappliquer a la branche courante

git cherry-pick SHA1_HASH

Rebase - rejouer les commits drsquoune branche

Les fusions creent des commits fantomes sous forme de liensdans le graphe des versionsLorsqursquoune branche nrsquoa que quelques commits locaux rebase estpreferable

git rebase master

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Copier un repository

git clone repo

repo un URL du repository a copier Peut etre

un chemin vers un repertoire sur la meme machine

ssh[user]hostpath - utilise GIT dans SSH

githostpath - acces anonyme avec le protocole GIT

httphostpath - acces anonyme avec le protocole HTTP

exercice

repository dinnersshenvol2010traclaasfrgitenvol2010dinner

clonez le repository

creez votre branche personnelle

modifiez le code

utilisez les fichiers de compilation du TP automakearrangez le stylecorrigez des defauts dans le code

commitez vos modifs au fur et a mesure

synchronizez avec le repository central

visualisez les modifs faites par drsquoautres

fusionnez les modifs de plusieurs personnes pour faire unemeilleure version

Mise a jour depuis un repository

git pull

recupere les branches distantes dans le repository local

fusionne la branch distante par defaut dans la branchecouranteet commite le resultat

peut produire un conflit

Resoudre le conflitCommitter le resultat

Branches distantes

git branch -r

liste les branches distantes (originbranch)

Une branche distante peut etre suivie (fusionnee dans les 2 sens)avec

git checkout -t -b newbranch origingnewbranch

Utilisation de rebase avec les branches distantes

fecth recupere les commits distants sans les fusionner

git fetch

git rebase originmaster

Raccourci

git fetch

git rebase originmaster

Envoyer des commits vers un repository

git push

Transfere les commits locaux vers les branches distantes suiviesGenere une erreur si pas a jour (pull ou rebase drsquoabord)

Il faut transferer les tags separement

git push --tags

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Identifier les auteurs

git blame -- filetxt

Pour chaque ligne drsquoun fichier montre le dernier commit et sonauteur

Recherche par dissection drsquoun bug

git bissect permet de rechercher dans lrsquohistorique des commitslrsquoorigine drsquoun bug

git bisect start

git bisect bad la version courante est buguee

git bisect good v2633-rc2 derniere bonne version

Git determine le commit median et lrsquoextraitTester et executer selon le resultat

git bisect good

git bisect bad

A la fin reste le commit responsable du bug

Creer une distribution avec git

(Alternative a la fonction drsquoautomake make dist)

Committer toutes les modifications y compris le nouveau nomde la version

Tagger le resultat

Utiliser archive pour produire une archive qui sera ladistribution source

git tag -a foo-13

git archive --prefix=foo-13 foo-13

| gzip -c - gt foo-13targz

Outils graphiques

gitk

git gui

qgit

giggle

Web browsers cgit gitweb

Integration avec eclipse

Installation

ajouter httpdownloadeclipseorgegitupdatescomme site de telechargement(Preferences rarr InstallUpdates)

installer EGit et JGit (Help rarr Install new software)

Eclipse peut alors gerer lrsquohistorique du projet avec git

Documentationhttpwwweclipseorgegitdocumentation

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix

Marquer une version

Creer un objet de type tag contenant un nom et un commentaireOuvre lrsquoediteur de texte pour saisir le commentaire

git tag -a git-tuto-10

git tag -l

git-tuto-10

Corriger les erreurs revenir a une version saine

Restaurer le working set a partir de la derniere version commiteedetruisant toutes les modifications locales

git reset --hard

Inverser un commit donne

git revert 03bace

Finished one revert

Created commit c333ab5 Revert 3rd version

1 files changed 1 insertions(+) 1 deletions(-)

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Changer de branche

Creer une nouvelle branche

git checkout -b newbranch

Retourner a la branche master

git checkout master

Lister les branches existantes

git branch

master

newbranch

Fusionner les modifications drsquoune autre branche

git merge branch

Fusionne les commits de la branche branch et commite leresultat

2 types de fusion

fast forward pas de conflits seulement des nouveaux commitsa ajouter a la version courante

fusion normale presence de modifications locales utilise unalgorithme de fusion a 3 voies

Gestion des conflits

Un conflit se produit lorsque les modifications a fusionner sontincompatibles avec les modifications locales de la branche cible

Les fichiers avec des conflits contiennent des marqueurs deconflit

Ils ne sont pas automatiquement ajoutes a lrsquoindex

Resoudre le conflict

Ajouter les fichiers a lrsquoindex

Committer le resultat

Outils pour aider a la fusion

Git peut utiliser des outils tiers pour aider a resoudre les conflitskdiff3 tkdiff meld xxdiff opendiff

git config --global mergetool meld

git mergetool

Selectionner des modifications individuelles

Prendre un commit dans une autre branche (une correction de bug)et lrsquoappliquer a la branche courante

git cherry-pick SHA1_HASH

Rebase - rejouer les commits drsquoune branche

Les fusions creent des commits fantomes sous forme de liensdans le graphe des versionsLorsqursquoune branche nrsquoa que quelques commits locaux rebase estpreferable

git rebase master

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Copier un repository

git clone repo

repo un URL du repository a copier Peut etre

un chemin vers un repertoire sur la meme machine

ssh[user]hostpath - utilise GIT dans SSH

githostpath - acces anonyme avec le protocole GIT

httphostpath - acces anonyme avec le protocole HTTP

exercice

repository dinnersshenvol2010traclaasfrgitenvol2010dinner

clonez le repository

creez votre branche personnelle

modifiez le code

utilisez les fichiers de compilation du TP automakearrangez le stylecorrigez des defauts dans le code

commitez vos modifs au fur et a mesure

synchronizez avec le repository central

visualisez les modifs faites par drsquoautres

fusionnez les modifs de plusieurs personnes pour faire unemeilleure version

Mise a jour depuis un repository

git pull

recupere les branches distantes dans le repository local

fusionne la branch distante par defaut dans la branchecouranteet commite le resultat

peut produire un conflit

Resoudre le conflitCommitter le resultat

Branches distantes

git branch -r

liste les branches distantes (originbranch)

Une branche distante peut etre suivie (fusionnee dans les 2 sens)avec

git checkout -t -b newbranch origingnewbranch

Utilisation de rebase avec les branches distantes

fecth recupere les commits distants sans les fusionner

git fetch

git rebase originmaster

Raccourci

git fetch

git rebase originmaster

Envoyer des commits vers un repository

git push

Transfere les commits locaux vers les branches distantes suiviesGenere une erreur si pas a jour (pull ou rebase drsquoabord)

Il faut transferer les tags separement

git push --tags

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Identifier les auteurs

git blame -- filetxt

Pour chaque ligne drsquoun fichier montre le dernier commit et sonauteur

Recherche par dissection drsquoun bug

git bissect permet de rechercher dans lrsquohistorique des commitslrsquoorigine drsquoun bug

git bisect start

git bisect bad la version courante est buguee

git bisect good v2633-rc2 derniere bonne version

Git determine le commit median et lrsquoextraitTester et executer selon le resultat

git bisect good

git bisect bad

A la fin reste le commit responsable du bug

Creer une distribution avec git

(Alternative a la fonction drsquoautomake make dist)

Committer toutes les modifications y compris le nouveau nomde la version

Tagger le resultat

Utiliser archive pour produire une archive qui sera ladistribution source

git tag -a foo-13

git archive --prefix=foo-13 foo-13

| gzip -c - gt foo-13targz

Outils graphiques

gitk

git gui

qgit

giggle

Web browsers cgit gitweb

Integration avec eclipse

Installation

ajouter httpdownloadeclipseorgegitupdatescomme site de telechargement(Preferences rarr InstallUpdates)

installer EGit et JGit (Help rarr Install new software)

Eclipse peut alors gerer lrsquohistorique du projet avec git

Documentationhttpwwweclipseorgegitdocumentation

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix

Corriger les erreurs revenir a une version saine

Restaurer le working set a partir de la derniere version commiteedetruisant toutes les modifications locales

git reset --hard

Inverser un commit donne

git revert 03bace

Finished one revert

Created commit c333ab5 Revert 3rd version

1 files changed 1 insertions(+) 1 deletions(-)

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Changer de branche

Creer une nouvelle branche

git checkout -b newbranch

Retourner a la branche master

git checkout master

Lister les branches existantes

git branch

master

newbranch

Fusionner les modifications drsquoune autre branche

git merge branch

Fusionne les commits de la branche branch et commite leresultat

2 types de fusion

fast forward pas de conflits seulement des nouveaux commitsa ajouter a la version courante

fusion normale presence de modifications locales utilise unalgorithme de fusion a 3 voies

Gestion des conflits

Un conflit se produit lorsque les modifications a fusionner sontincompatibles avec les modifications locales de la branche cible

Les fichiers avec des conflits contiennent des marqueurs deconflit

Ils ne sont pas automatiquement ajoutes a lrsquoindex

Resoudre le conflict

Ajouter les fichiers a lrsquoindex

Committer le resultat

Outils pour aider a la fusion

Git peut utiliser des outils tiers pour aider a resoudre les conflitskdiff3 tkdiff meld xxdiff opendiff

git config --global mergetool meld

git mergetool

Selectionner des modifications individuelles

Prendre un commit dans une autre branche (une correction de bug)et lrsquoappliquer a la branche courante

git cherry-pick SHA1_HASH

Rebase - rejouer les commits drsquoune branche

Les fusions creent des commits fantomes sous forme de liensdans le graphe des versionsLorsqursquoune branche nrsquoa que quelques commits locaux rebase estpreferable

git rebase master

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Copier un repository

git clone repo

repo un URL du repository a copier Peut etre

un chemin vers un repertoire sur la meme machine

ssh[user]hostpath - utilise GIT dans SSH

githostpath - acces anonyme avec le protocole GIT

httphostpath - acces anonyme avec le protocole HTTP

exercice

repository dinnersshenvol2010traclaasfrgitenvol2010dinner

clonez le repository

creez votre branche personnelle

modifiez le code

utilisez les fichiers de compilation du TP automakearrangez le stylecorrigez des defauts dans le code

commitez vos modifs au fur et a mesure

synchronizez avec le repository central

visualisez les modifs faites par drsquoautres

fusionnez les modifs de plusieurs personnes pour faire unemeilleure version

Mise a jour depuis un repository

git pull

recupere les branches distantes dans le repository local

fusionne la branch distante par defaut dans la branchecouranteet commite le resultat

peut produire un conflit

Resoudre le conflitCommitter le resultat

Branches distantes

git branch -r

liste les branches distantes (originbranch)

Une branche distante peut etre suivie (fusionnee dans les 2 sens)avec

git checkout -t -b newbranch origingnewbranch

Utilisation de rebase avec les branches distantes

fecth recupere les commits distants sans les fusionner

git fetch

git rebase originmaster

Raccourci

git fetch

git rebase originmaster

Envoyer des commits vers un repository

git push

Transfere les commits locaux vers les branches distantes suiviesGenere une erreur si pas a jour (pull ou rebase drsquoabord)

Il faut transferer les tags separement

git push --tags

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Identifier les auteurs

git blame -- filetxt

Pour chaque ligne drsquoun fichier montre le dernier commit et sonauteur

Recherche par dissection drsquoun bug

git bissect permet de rechercher dans lrsquohistorique des commitslrsquoorigine drsquoun bug

git bisect start

git bisect bad la version courante est buguee

git bisect good v2633-rc2 derniere bonne version

Git determine le commit median et lrsquoextraitTester et executer selon le resultat

git bisect good

git bisect bad

A la fin reste le commit responsable du bug

Creer une distribution avec git

(Alternative a la fonction drsquoautomake make dist)

Committer toutes les modifications y compris le nouveau nomde la version

Tagger le resultat

Utiliser archive pour produire une archive qui sera ladistribution source

git tag -a foo-13

git archive --prefix=foo-13 foo-13

| gzip -c - gt foo-13targz

Outils graphiques

gitk

git gui

qgit

giggle

Web browsers cgit gitweb

Integration avec eclipse

Installation

ajouter httpdownloadeclipseorgegitupdatescomme site de telechargement(Preferences rarr InstallUpdates)

installer EGit et JGit (Help rarr Install new software)

Eclipse peut alors gerer lrsquohistorique du projet avec git

Documentationhttpwwweclipseorgegitdocumentation

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Changer de branche

Creer une nouvelle branche

git checkout -b newbranch

Retourner a la branche master

git checkout master

Lister les branches existantes

git branch

master

newbranch

Fusionner les modifications drsquoune autre branche

git merge branch

Fusionne les commits de la branche branch et commite leresultat

2 types de fusion

fast forward pas de conflits seulement des nouveaux commitsa ajouter a la version courante

fusion normale presence de modifications locales utilise unalgorithme de fusion a 3 voies

Gestion des conflits

Un conflit se produit lorsque les modifications a fusionner sontincompatibles avec les modifications locales de la branche cible

Les fichiers avec des conflits contiennent des marqueurs deconflit

Ils ne sont pas automatiquement ajoutes a lrsquoindex

Resoudre le conflict

Ajouter les fichiers a lrsquoindex

Committer le resultat

Outils pour aider a la fusion

Git peut utiliser des outils tiers pour aider a resoudre les conflitskdiff3 tkdiff meld xxdiff opendiff

git config --global mergetool meld

git mergetool

Selectionner des modifications individuelles

Prendre un commit dans une autre branche (une correction de bug)et lrsquoappliquer a la branche courante

git cherry-pick SHA1_HASH

Rebase - rejouer les commits drsquoune branche

Les fusions creent des commits fantomes sous forme de liensdans le graphe des versionsLorsqursquoune branche nrsquoa que quelques commits locaux rebase estpreferable

git rebase master

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Copier un repository

git clone repo

repo un URL du repository a copier Peut etre

un chemin vers un repertoire sur la meme machine

ssh[user]hostpath - utilise GIT dans SSH

githostpath - acces anonyme avec le protocole GIT

httphostpath - acces anonyme avec le protocole HTTP

exercice

repository dinnersshenvol2010traclaasfrgitenvol2010dinner

clonez le repository

creez votre branche personnelle

modifiez le code

utilisez les fichiers de compilation du TP automakearrangez le stylecorrigez des defauts dans le code

commitez vos modifs au fur et a mesure

synchronizez avec le repository central

visualisez les modifs faites par drsquoautres

fusionnez les modifs de plusieurs personnes pour faire unemeilleure version

Mise a jour depuis un repository

git pull

recupere les branches distantes dans le repository local

fusionne la branch distante par defaut dans la branchecouranteet commite le resultat

peut produire un conflit

Resoudre le conflitCommitter le resultat

Branches distantes

git branch -r

liste les branches distantes (originbranch)

Une branche distante peut etre suivie (fusionnee dans les 2 sens)avec

git checkout -t -b newbranch origingnewbranch

Utilisation de rebase avec les branches distantes

fecth recupere les commits distants sans les fusionner

git fetch

git rebase originmaster

Raccourci

git fetch

git rebase originmaster

Envoyer des commits vers un repository

git push

Transfere les commits locaux vers les branches distantes suiviesGenere une erreur si pas a jour (pull ou rebase drsquoabord)

Il faut transferer les tags separement

git push --tags

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Identifier les auteurs

git blame -- filetxt

Pour chaque ligne drsquoun fichier montre le dernier commit et sonauteur

Recherche par dissection drsquoun bug

git bissect permet de rechercher dans lrsquohistorique des commitslrsquoorigine drsquoun bug

git bisect start

git bisect bad la version courante est buguee

git bisect good v2633-rc2 derniere bonne version

Git determine le commit median et lrsquoextraitTester et executer selon le resultat

git bisect good

git bisect bad

A la fin reste le commit responsable du bug

Creer une distribution avec git

(Alternative a la fonction drsquoautomake make dist)

Committer toutes les modifications y compris le nouveau nomde la version

Tagger le resultat

Utiliser archive pour produire une archive qui sera ladistribution source

git tag -a foo-13

git archive --prefix=foo-13 foo-13

| gzip -c - gt foo-13targz

Outils graphiques

gitk

git gui

qgit

giggle

Web browsers cgit gitweb

Integration avec eclipse

Installation

ajouter httpdownloadeclipseorgegitupdatescomme site de telechargement(Preferences rarr InstallUpdates)

installer EGit et JGit (Help rarr Install new software)

Eclipse peut alors gerer lrsquohistorique du projet avec git

Documentationhttpwwweclipseorgegitdocumentation

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix

Changer de branche

Creer une nouvelle branche

git checkout -b newbranch

Retourner a la branche master

git checkout master

Lister les branches existantes

git branch

master

newbranch

Fusionner les modifications drsquoune autre branche

git merge branch

Fusionne les commits de la branche branch et commite leresultat

2 types de fusion

fast forward pas de conflits seulement des nouveaux commitsa ajouter a la version courante

fusion normale presence de modifications locales utilise unalgorithme de fusion a 3 voies

Gestion des conflits

Un conflit se produit lorsque les modifications a fusionner sontincompatibles avec les modifications locales de la branche cible

Les fichiers avec des conflits contiennent des marqueurs deconflit

Ils ne sont pas automatiquement ajoutes a lrsquoindex

Resoudre le conflict

Ajouter les fichiers a lrsquoindex

Committer le resultat

Outils pour aider a la fusion

Git peut utiliser des outils tiers pour aider a resoudre les conflitskdiff3 tkdiff meld xxdiff opendiff

git config --global mergetool meld

git mergetool

Selectionner des modifications individuelles

Prendre un commit dans une autre branche (une correction de bug)et lrsquoappliquer a la branche courante

git cherry-pick SHA1_HASH

Rebase - rejouer les commits drsquoune branche

Les fusions creent des commits fantomes sous forme de liensdans le graphe des versionsLorsqursquoune branche nrsquoa que quelques commits locaux rebase estpreferable

git rebase master

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Copier un repository

git clone repo

repo un URL du repository a copier Peut etre

un chemin vers un repertoire sur la meme machine

ssh[user]hostpath - utilise GIT dans SSH

githostpath - acces anonyme avec le protocole GIT

httphostpath - acces anonyme avec le protocole HTTP

exercice

repository dinnersshenvol2010traclaasfrgitenvol2010dinner

clonez le repository

creez votre branche personnelle

modifiez le code

utilisez les fichiers de compilation du TP automakearrangez le stylecorrigez des defauts dans le code

commitez vos modifs au fur et a mesure

synchronizez avec le repository central

visualisez les modifs faites par drsquoautres

fusionnez les modifs de plusieurs personnes pour faire unemeilleure version

Mise a jour depuis un repository

git pull

recupere les branches distantes dans le repository local

fusionne la branch distante par defaut dans la branchecouranteet commite le resultat

peut produire un conflit

Resoudre le conflitCommitter le resultat

Branches distantes

git branch -r

liste les branches distantes (originbranch)

Une branche distante peut etre suivie (fusionnee dans les 2 sens)avec

git checkout -t -b newbranch origingnewbranch

Utilisation de rebase avec les branches distantes

fecth recupere les commits distants sans les fusionner

git fetch

git rebase originmaster

Raccourci

git fetch

git rebase originmaster

Envoyer des commits vers un repository

git push

Transfere les commits locaux vers les branches distantes suiviesGenere une erreur si pas a jour (pull ou rebase drsquoabord)

Il faut transferer les tags separement

git push --tags

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Identifier les auteurs

git blame -- filetxt

Pour chaque ligne drsquoun fichier montre le dernier commit et sonauteur

Recherche par dissection drsquoun bug

git bissect permet de rechercher dans lrsquohistorique des commitslrsquoorigine drsquoun bug

git bisect start

git bisect bad la version courante est buguee

git bisect good v2633-rc2 derniere bonne version

Git determine le commit median et lrsquoextraitTester et executer selon le resultat

git bisect good

git bisect bad

A la fin reste le commit responsable du bug

Creer une distribution avec git

(Alternative a la fonction drsquoautomake make dist)

Committer toutes les modifications y compris le nouveau nomde la version

Tagger le resultat

Utiliser archive pour produire une archive qui sera ladistribution source

git tag -a foo-13

git archive --prefix=foo-13 foo-13

| gzip -c - gt foo-13targz

Outils graphiques

gitk

git gui

qgit

giggle

Web browsers cgit gitweb

Integration avec eclipse

Installation

ajouter httpdownloadeclipseorgegitupdatescomme site de telechargement(Preferences rarr InstallUpdates)

installer EGit et JGit (Help rarr Install new software)

Eclipse peut alors gerer lrsquohistorique du projet avec git

Documentationhttpwwweclipseorgegitdocumentation

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix

Lister les branches existantes

git branch

master

newbranch

Fusionner les modifications drsquoune autre branche

git merge branch

Fusionne les commits de la branche branch et commite leresultat

2 types de fusion

fast forward pas de conflits seulement des nouveaux commitsa ajouter a la version courante

fusion normale presence de modifications locales utilise unalgorithme de fusion a 3 voies

Gestion des conflits

Un conflit se produit lorsque les modifications a fusionner sontincompatibles avec les modifications locales de la branche cible

Les fichiers avec des conflits contiennent des marqueurs deconflit

Ils ne sont pas automatiquement ajoutes a lrsquoindex

Resoudre le conflict

Ajouter les fichiers a lrsquoindex

Committer le resultat

Outils pour aider a la fusion

Git peut utiliser des outils tiers pour aider a resoudre les conflitskdiff3 tkdiff meld xxdiff opendiff

git config --global mergetool meld

git mergetool

Selectionner des modifications individuelles

Prendre un commit dans une autre branche (une correction de bug)et lrsquoappliquer a la branche courante

git cherry-pick SHA1_HASH

Rebase - rejouer les commits drsquoune branche

Les fusions creent des commits fantomes sous forme de liensdans le graphe des versionsLorsqursquoune branche nrsquoa que quelques commits locaux rebase estpreferable

git rebase master

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Copier un repository

git clone repo

repo un URL du repository a copier Peut etre

un chemin vers un repertoire sur la meme machine

ssh[user]hostpath - utilise GIT dans SSH

githostpath - acces anonyme avec le protocole GIT

httphostpath - acces anonyme avec le protocole HTTP

exercice

repository dinnersshenvol2010traclaasfrgitenvol2010dinner

clonez le repository

creez votre branche personnelle

modifiez le code

utilisez les fichiers de compilation du TP automakearrangez le stylecorrigez des defauts dans le code

commitez vos modifs au fur et a mesure

synchronizez avec le repository central

visualisez les modifs faites par drsquoautres

fusionnez les modifs de plusieurs personnes pour faire unemeilleure version

Mise a jour depuis un repository

git pull

recupere les branches distantes dans le repository local

fusionne la branch distante par defaut dans la branchecouranteet commite le resultat

peut produire un conflit

Resoudre le conflitCommitter le resultat

Branches distantes

git branch -r

liste les branches distantes (originbranch)

Une branche distante peut etre suivie (fusionnee dans les 2 sens)avec

git checkout -t -b newbranch origingnewbranch

Utilisation de rebase avec les branches distantes

fecth recupere les commits distants sans les fusionner

git fetch

git rebase originmaster

Raccourci

git fetch

git rebase originmaster

Envoyer des commits vers un repository

git push

Transfere les commits locaux vers les branches distantes suiviesGenere une erreur si pas a jour (pull ou rebase drsquoabord)

Il faut transferer les tags separement

git push --tags

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Identifier les auteurs

git blame -- filetxt

Pour chaque ligne drsquoun fichier montre le dernier commit et sonauteur

Recherche par dissection drsquoun bug

git bissect permet de rechercher dans lrsquohistorique des commitslrsquoorigine drsquoun bug

git bisect start

git bisect bad la version courante est buguee

git bisect good v2633-rc2 derniere bonne version

Git determine le commit median et lrsquoextraitTester et executer selon le resultat

git bisect good

git bisect bad

A la fin reste le commit responsable du bug

Creer une distribution avec git

(Alternative a la fonction drsquoautomake make dist)

Committer toutes les modifications y compris le nouveau nomde la version

Tagger le resultat

Utiliser archive pour produire une archive qui sera ladistribution source

git tag -a foo-13

git archive --prefix=foo-13 foo-13

| gzip -c - gt foo-13targz

Outils graphiques

gitk

git gui

qgit

giggle

Web browsers cgit gitweb

Integration avec eclipse

Installation

ajouter httpdownloadeclipseorgegitupdatescomme site de telechargement(Preferences rarr InstallUpdates)

installer EGit et JGit (Help rarr Install new software)

Eclipse peut alors gerer lrsquohistorique du projet avec git

Documentationhttpwwweclipseorgegitdocumentation

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix

Fusionner les modifications drsquoune autre branche

git merge branch

Fusionne les commits de la branche branch et commite leresultat

2 types de fusion

fast forward pas de conflits seulement des nouveaux commitsa ajouter a la version courante

fusion normale presence de modifications locales utilise unalgorithme de fusion a 3 voies

Gestion des conflits

Un conflit se produit lorsque les modifications a fusionner sontincompatibles avec les modifications locales de la branche cible

Les fichiers avec des conflits contiennent des marqueurs deconflit

Ils ne sont pas automatiquement ajoutes a lrsquoindex

Resoudre le conflict

Ajouter les fichiers a lrsquoindex

Committer le resultat

Outils pour aider a la fusion

Git peut utiliser des outils tiers pour aider a resoudre les conflitskdiff3 tkdiff meld xxdiff opendiff

git config --global mergetool meld

git mergetool

Selectionner des modifications individuelles

Prendre un commit dans une autre branche (une correction de bug)et lrsquoappliquer a la branche courante

git cherry-pick SHA1_HASH

Rebase - rejouer les commits drsquoune branche

Les fusions creent des commits fantomes sous forme de liensdans le graphe des versionsLorsqursquoune branche nrsquoa que quelques commits locaux rebase estpreferable

git rebase master

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Copier un repository

git clone repo

repo un URL du repository a copier Peut etre

un chemin vers un repertoire sur la meme machine

ssh[user]hostpath - utilise GIT dans SSH

githostpath - acces anonyme avec le protocole GIT

httphostpath - acces anonyme avec le protocole HTTP

exercice

repository dinnersshenvol2010traclaasfrgitenvol2010dinner

clonez le repository

creez votre branche personnelle

modifiez le code

utilisez les fichiers de compilation du TP automakearrangez le stylecorrigez des defauts dans le code

commitez vos modifs au fur et a mesure

synchronizez avec le repository central

visualisez les modifs faites par drsquoautres

fusionnez les modifs de plusieurs personnes pour faire unemeilleure version

Mise a jour depuis un repository

git pull

recupere les branches distantes dans le repository local

fusionne la branch distante par defaut dans la branchecouranteet commite le resultat

peut produire un conflit

Resoudre le conflitCommitter le resultat

Branches distantes

git branch -r

liste les branches distantes (originbranch)

Une branche distante peut etre suivie (fusionnee dans les 2 sens)avec

git checkout -t -b newbranch origingnewbranch

Utilisation de rebase avec les branches distantes

fecth recupere les commits distants sans les fusionner

git fetch

git rebase originmaster

Raccourci

git fetch

git rebase originmaster

Envoyer des commits vers un repository

git push

Transfere les commits locaux vers les branches distantes suiviesGenere une erreur si pas a jour (pull ou rebase drsquoabord)

Il faut transferer les tags separement

git push --tags

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Identifier les auteurs

git blame -- filetxt

Pour chaque ligne drsquoun fichier montre le dernier commit et sonauteur

Recherche par dissection drsquoun bug

git bissect permet de rechercher dans lrsquohistorique des commitslrsquoorigine drsquoun bug

git bisect start

git bisect bad la version courante est buguee

git bisect good v2633-rc2 derniere bonne version

Git determine le commit median et lrsquoextraitTester et executer selon le resultat

git bisect good

git bisect bad

A la fin reste le commit responsable du bug

Creer une distribution avec git

(Alternative a la fonction drsquoautomake make dist)

Committer toutes les modifications y compris le nouveau nomde la version

Tagger le resultat

Utiliser archive pour produire une archive qui sera ladistribution source

git tag -a foo-13

git archive --prefix=foo-13 foo-13

| gzip -c - gt foo-13targz

Outils graphiques

gitk

git gui

qgit

giggle

Web browsers cgit gitweb

Integration avec eclipse

Installation

ajouter httpdownloadeclipseorgegitupdatescomme site de telechargement(Preferences rarr InstallUpdates)

installer EGit et JGit (Help rarr Install new software)

Eclipse peut alors gerer lrsquohistorique du projet avec git

Documentationhttpwwweclipseorgegitdocumentation

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix

Gestion des conflits

Un conflit se produit lorsque les modifications a fusionner sontincompatibles avec les modifications locales de la branche cible

Les fichiers avec des conflits contiennent des marqueurs deconflit

Ils ne sont pas automatiquement ajoutes a lrsquoindex

Resoudre le conflict

Ajouter les fichiers a lrsquoindex

Committer le resultat

Outils pour aider a la fusion

Git peut utiliser des outils tiers pour aider a resoudre les conflitskdiff3 tkdiff meld xxdiff opendiff

git config --global mergetool meld

git mergetool

Selectionner des modifications individuelles

Prendre un commit dans une autre branche (une correction de bug)et lrsquoappliquer a la branche courante

git cherry-pick SHA1_HASH

Rebase - rejouer les commits drsquoune branche

Les fusions creent des commits fantomes sous forme de liensdans le graphe des versionsLorsqursquoune branche nrsquoa que quelques commits locaux rebase estpreferable

git rebase master

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Copier un repository

git clone repo

repo un URL du repository a copier Peut etre

un chemin vers un repertoire sur la meme machine

ssh[user]hostpath - utilise GIT dans SSH

githostpath - acces anonyme avec le protocole GIT

httphostpath - acces anonyme avec le protocole HTTP

exercice

repository dinnersshenvol2010traclaasfrgitenvol2010dinner

clonez le repository

creez votre branche personnelle

modifiez le code

utilisez les fichiers de compilation du TP automakearrangez le stylecorrigez des defauts dans le code

commitez vos modifs au fur et a mesure

synchronizez avec le repository central

visualisez les modifs faites par drsquoautres

fusionnez les modifs de plusieurs personnes pour faire unemeilleure version

Mise a jour depuis un repository

git pull

recupere les branches distantes dans le repository local

fusionne la branch distante par defaut dans la branchecouranteet commite le resultat

peut produire un conflit

Resoudre le conflitCommitter le resultat

Branches distantes

git branch -r

liste les branches distantes (originbranch)

Une branche distante peut etre suivie (fusionnee dans les 2 sens)avec

git checkout -t -b newbranch origingnewbranch

Utilisation de rebase avec les branches distantes

fecth recupere les commits distants sans les fusionner

git fetch

git rebase originmaster

Raccourci

git fetch

git rebase originmaster

Envoyer des commits vers un repository

git push

Transfere les commits locaux vers les branches distantes suiviesGenere une erreur si pas a jour (pull ou rebase drsquoabord)

Il faut transferer les tags separement

git push --tags

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Identifier les auteurs

git blame -- filetxt

Pour chaque ligne drsquoun fichier montre le dernier commit et sonauteur

Recherche par dissection drsquoun bug

git bissect permet de rechercher dans lrsquohistorique des commitslrsquoorigine drsquoun bug

git bisect start

git bisect bad la version courante est buguee

git bisect good v2633-rc2 derniere bonne version

Git determine le commit median et lrsquoextraitTester et executer selon le resultat

git bisect good

git bisect bad

A la fin reste le commit responsable du bug

Creer une distribution avec git

(Alternative a la fonction drsquoautomake make dist)

Committer toutes les modifications y compris le nouveau nomde la version

Tagger le resultat

Utiliser archive pour produire une archive qui sera ladistribution source

git tag -a foo-13

git archive --prefix=foo-13 foo-13

| gzip -c - gt foo-13targz

Outils graphiques

gitk

git gui

qgit

giggle

Web browsers cgit gitweb

Integration avec eclipse

Installation

ajouter httpdownloadeclipseorgegitupdatescomme site de telechargement(Preferences rarr InstallUpdates)

installer EGit et JGit (Help rarr Install new software)

Eclipse peut alors gerer lrsquohistorique du projet avec git

Documentationhttpwwweclipseorgegitdocumentation

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix

Outils pour aider a la fusion

Git peut utiliser des outils tiers pour aider a resoudre les conflitskdiff3 tkdiff meld xxdiff opendiff

git config --global mergetool meld

git mergetool

Selectionner des modifications individuelles

Prendre un commit dans une autre branche (une correction de bug)et lrsquoappliquer a la branche courante

git cherry-pick SHA1_HASH

Rebase - rejouer les commits drsquoune branche

Les fusions creent des commits fantomes sous forme de liensdans le graphe des versionsLorsqursquoune branche nrsquoa que quelques commits locaux rebase estpreferable

git rebase master

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Copier un repository

git clone repo

repo un URL du repository a copier Peut etre

un chemin vers un repertoire sur la meme machine

ssh[user]hostpath - utilise GIT dans SSH

githostpath - acces anonyme avec le protocole GIT

httphostpath - acces anonyme avec le protocole HTTP

exercice

repository dinnersshenvol2010traclaasfrgitenvol2010dinner

clonez le repository

creez votre branche personnelle

modifiez le code

utilisez les fichiers de compilation du TP automakearrangez le stylecorrigez des defauts dans le code

commitez vos modifs au fur et a mesure

synchronizez avec le repository central

visualisez les modifs faites par drsquoautres

fusionnez les modifs de plusieurs personnes pour faire unemeilleure version

Mise a jour depuis un repository

git pull

recupere les branches distantes dans le repository local

fusionne la branch distante par defaut dans la branchecouranteet commite le resultat

peut produire un conflit

Resoudre le conflitCommitter le resultat

Branches distantes

git branch -r

liste les branches distantes (originbranch)

Une branche distante peut etre suivie (fusionnee dans les 2 sens)avec

git checkout -t -b newbranch origingnewbranch

Utilisation de rebase avec les branches distantes

fecth recupere les commits distants sans les fusionner

git fetch

git rebase originmaster

Raccourci

git fetch

git rebase originmaster

Envoyer des commits vers un repository

git push

Transfere les commits locaux vers les branches distantes suiviesGenere une erreur si pas a jour (pull ou rebase drsquoabord)

Il faut transferer les tags separement

git push --tags

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Identifier les auteurs

git blame -- filetxt

Pour chaque ligne drsquoun fichier montre le dernier commit et sonauteur

Recherche par dissection drsquoun bug

git bissect permet de rechercher dans lrsquohistorique des commitslrsquoorigine drsquoun bug

git bisect start

git bisect bad la version courante est buguee

git bisect good v2633-rc2 derniere bonne version

Git determine le commit median et lrsquoextraitTester et executer selon le resultat

git bisect good

git bisect bad

A la fin reste le commit responsable du bug

Creer une distribution avec git

(Alternative a la fonction drsquoautomake make dist)

Committer toutes les modifications y compris le nouveau nomde la version

Tagger le resultat

Utiliser archive pour produire une archive qui sera ladistribution source

git tag -a foo-13

git archive --prefix=foo-13 foo-13

| gzip -c - gt foo-13targz

Outils graphiques

gitk

git gui

qgit

giggle

Web browsers cgit gitweb

Integration avec eclipse

Installation

ajouter httpdownloadeclipseorgegitupdatescomme site de telechargement(Preferences rarr InstallUpdates)

installer EGit et JGit (Help rarr Install new software)

Eclipse peut alors gerer lrsquohistorique du projet avec git

Documentationhttpwwweclipseorgegitdocumentation

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix

Selectionner des modifications individuelles

Prendre un commit dans une autre branche (une correction de bug)et lrsquoappliquer a la branche courante

git cherry-pick SHA1_HASH

Rebase - rejouer les commits drsquoune branche

Les fusions creent des commits fantomes sous forme de liensdans le graphe des versionsLorsqursquoune branche nrsquoa que quelques commits locaux rebase estpreferable

git rebase master

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Copier un repository

git clone repo

repo un URL du repository a copier Peut etre

un chemin vers un repertoire sur la meme machine

ssh[user]hostpath - utilise GIT dans SSH

githostpath - acces anonyme avec le protocole GIT

httphostpath - acces anonyme avec le protocole HTTP

exercice

repository dinnersshenvol2010traclaasfrgitenvol2010dinner

clonez le repository

creez votre branche personnelle

modifiez le code

utilisez les fichiers de compilation du TP automakearrangez le stylecorrigez des defauts dans le code

commitez vos modifs au fur et a mesure

synchronizez avec le repository central

visualisez les modifs faites par drsquoautres

fusionnez les modifs de plusieurs personnes pour faire unemeilleure version

Mise a jour depuis un repository

git pull

recupere les branches distantes dans le repository local

fusionne la branch distante par defaut dans la branchecouranteet commite le resultat

peut produire un conflit

Resoudre le conflitCommitter le resultat

Branches distantes

git branch -r

liste les branches distantes (originbranch)

Une branche distante peut etre suivie (fusionnee dans les 2 sens)avec

git checkout -t -b newbranch origingnewbranch

Utilisation de rebase avec les branches distantes

fecth recupere les commits distants sans les fusionner

git fetch

git rebase originmaster

Raccourci

git fetch

git rebase originmaster

Envoyer des commits vers un repository

git push

Transfere les commits locaux vers les branches distantes suiviesGenere une erreur si pas a jour (pull ou rebase drsquoabord)

Il faut transferer les tags separement

git push --tags

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Identifier les auteurs

git blame -- filetxt

Pour chaque ligne drsquoun fichier montre le dernier commit et sonauteur

Recherche par dissection drsquoun bug

git bissect permet de rechercher dans lrsquohistorique des commitslrsquoorigine drsquoun bug

git bisect start

git bisect bad la version courante est buguee

git bisect good v2633-rc2 derniere bonne version

Git determine le commit median et lrsquoextraitTester et executer selon le resultat

git bisect good

git bisect bad

A la fin reste le commit responsable du bug

Creer une distribution avec git

(Alternative a la fonction drsquoautomake make dist)

Committer toutes les modifications y compris le nouveau nomde la version

Tagger le resultat

Utiliser archive pour produire une archive qui sera ladistribution source

git tag -a foo-13

git archive --prefix=foo-13 foo-13

| gzip -c - gt foo-13targz

Outils graphiques

gitk

git gui

qgit

giggle

Web browsers cgit gitweb

Integration avec eclipse

Installation

ajouter httpdownloadeclipseorgegitupdatescomme site de telechargement(Preferences rarr InstallUpdates)

installer EGit et JGit (Help rarr Install new software)

Eclipse peut alors gerer lrsquohistorique du projet avec git

Documentationhttpwwweclipseorgegitdocumentation

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix

Rebase - rejouer les commits drsquoune branche

Les fusions creent des commits fantomes sous forme de liensdans le graphe des versionsLorsqursquoune branche nrsquoa que quelques commits locaux rebase estpreferable

git rebase master

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Copier un repository

git clone repo

repo un URL du repository a copier Peut etre

un chemin vers un repertoire sur la meme machine

ssh[user]hostpath - utilise GIT dans SSH

githostpath - acces anonyme avec le protocole GIT

httphostpath - acces anonyme avec le protocole HTTP

exercice

repository dinnersshenvol2010traclaasfrgitenvol2010dinner

clonez le repository

creez votre branche personnelle

modifiez le code

utilisez les fichiers de compilation du TP automakearrangez le stylecorrigez des defauts dans le code

commitez vos modifs au fur et a mesure

synchronizez avec le repository central

visualisez les modifs faites par drsquoautres

fusionnez les modifs de plusieurs personnes pour faire unemeilleure version

Mise a jour depuis un repository

git pull

recupere les branches distantes dans le repository local

fusionne la branch distante par defaut dans la branchecouranteet commite le resultat

peut produire un conflit

Resoudre le conflitCommitter le resultat

Branches distantes

git branch -r

liste les branches distantes (originbranch)

Une branche distante peut etre suivie (fusionnee dans les 2 sens)avec

git checkout -t -b newbranch origingnewbranch

Utilisation de rebase avec les branches distantes

fecth recupere les commits distants sans les fusionner

git fetch

git rebase originmaster

Raccourci

git fetch

git rebase originmaster

Envoyer des commits vers un repository

git push

Transfere les commits locaux vers les branches distantes suiviesGenere une erreur si pas a jour (pull ou rebase drsquoabord)

Il faut transferer les tags separement

git push --tags

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Identifier les auteurs

git blame -- filetxt

Pour chaque ligne drsquoun fichier montre le dernier commit et sonauteur

Recherche par dissection drsquoun bug

git bissect permet de rechercher dans lrsquohistorique des commitslrsquoorigine drsquoun bug

git bisect start

git bisect bad la version courante est buguee

git bisect good v2633-rc2 derniere bonne version

Git determine le commit median et lrsquoextraitTester et executer selon le resultat

git bisect good

git bisect bad

A la fin reste le commit responsable du bug

Creer une distribution avec git

(Alternative a la fonction drsquoautomake make dist)

Committer toutes les modifications y compris le nouveau nomde la version

Tagger le resultat

Utiliser archive pour produire une archive qui sera ladistribution source

git tag -a foo-13

git archive --prefix=foo-13 foo-13

| gzip -c - gt foo-13targz

Outils graphiques

gitk

git gui

qgit

giggle

Web browsers cgit gitweb

Integration avec eclipse

Installation

ajouter httpdownloadeclipseorgegitupdatescomme site de telechargement(Preferences rarr InstallUpdates)

installer EGit et JGit (Help rarr Install new software)

Eclipse peut alors gerer lrsquohistorique du projet avec git

Documentationhttpwwweclipseorgegitdocumentation

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Copier un repository

git clone repo

repo un URL du repository a copier Peut etre

un chemin vers un repertoire sur la meme machine

ssh[user]hostpath - utilise GIT dans SSH

githostpath - acces anonyme avec le protocole GIT

httphostpath - acces anonyme avec le protocole HTTP

exercice

repository dinnersshenvol2010traclaasfrgitenvol2010dinner

clonez le repository

creez votre branche personnelle

modifiez le code

utilisez les fichiers de compilation du TP automakearrangez le stylecorrigez des defauts dans le code

commitez vos modifs au fur et a mesure

synchronizez avec le repository central

visualisez les modifs faites par drsquoautres

fusionnez les modifs de plusieurs personnes pour faire unemeilleure version

Mise a jour depuis un repository

git pull

recupere les branches distantes dans le repository local

fusionne la branch distante par defaut dans la branchecouranteet commite le resultat

peut produire un conflit

Resoudre le conflitCommitter le resultat

Branches distantes

git branch -r

liste les branches distantes (originbranch)

Une branche distante peut etre suivie (fusionnee dans les 2 sens)avec

git checkout -t -b newbranch origingnewbranch

Utilisation de rebase avec les branches distantes

fecth recupere les commits distants sans les fusionner

git fetch

git rebase originmaster

Raccourci

git fetch

git rebase originmaster

Envoyer des commits vers un repository

git push

Transfere les commits locaux vers les branches distantes suiviesGenere une erreur si pas a jour (pull ou rebase drsquoabord)

Il faut transferer les tags separement

git push --tags

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Identifier les auteurs

git blame -- filetxt

Pour chaque ligne drsquoun fichier montre le dernier commit et sonauteur

Recherche par dissection drsquoun bug

git bissect permet de rechercher dans lrsquohistorique des commitslrsquoorigine drsquoun bug

git bisect start

git bisect bad la version courante est buguee

git bisect good v2633-rc2 derniere bonne version

Git determine le commit median et lrsquoextraitTester et executer selon le resultat

git bisect good

git bisect bad

A la fin reste le commit responsable du bug

Creer une distribution avec git

(Alternative a la fonction drsquoautomake make dist)

Committer toutes les modifications y compris le nouveau nomde la version

Tagger le resultat

Utiliser archive pour produire une archive qui sera ladistribution source

git tag -a foo-13

git archive --prefix=foo-13 foo-13

| gzip -c - gt foo-13targz

Outils graphiques

gitk

git gui

qgit

giggle

Web browsers cgit gitweb

Integration avec eclipse

Installation

ajouter httpdownloadeclipseorgegitupdatescomme site de telechargement(Preferences rarr InstallUpdates)

installer EGit et JGit (Help rarr Install new software)

Eclipse peut alors gerer lrsquohistorique du projet avec git

Documentationhttpwwweclipseorgegitdocumentation

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix

Copier un repository

git clone repo

repo un URL du repository a copier Peut etre

un chemin vers un repertoire sur la meme machine

ssh[user]hostpath - utilise GIT dans SSH

githostpath - acces anonyme avec le protocole GIT

httphostpath - acces anonyme avec le protocole HTTP

exercice

repository dinnersshenvol2010traclaasfrgitenvol2010dinner

clonez le repository

creez votre branche personnelle

modifiez le code

utilisez les fichiers de compilation du TP automakearrangez le stylecorrigez des defauts dans le code

commitez vos modifs au fur et a mesure

synchronizez avec le repository central

visualisez les modifs faites par drsquoautres

fusionnez les modifs de plusieurs personnes pour faire unemeilleure version

Mise a jour depuis un repository

git pull

recupere les branches distantes dans le repository local

fusionne la branch distante par defaut dans la branchecouranteet commite le resultat

peut produire un conflit

Resoudre le conflitCommitter le resultat

Branches distantes

git branch -r

liste les branches distantes (originbranch)

Une branche distante peut etre suivie (fusionnee dans les 2 sens)avec

git checkout -t -b newbranch origingnewbranch

Utilisation de rebase avec les branches distantes

fecth recupere les commits distants sans les fusionner

git fetch

git rebase originmaster

Raccourci

git fetch

git rebase originmaster

Envoyer des commits vers un repository

git push

Transfere les commits locaux vers les branches distantes suiviesGenere une erreur si pas a jour (pull ou rebase drsquoabord)

Il faut transferer les tags separement

git push --tags

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Identifier les auteurs

git blame -- filetxt

Pour chaque ligne drsquoun fichier montre le dernier commit et sonauteur

Recherche par dissection drsquoun bug

git bissect permet de rechercher dans lrsquohistorique des commitslrsquoorigine drsquoun bug

git bisect start

git bisect bad la version courante est buguee

git bisect good v2633-rc2 derniere bonne version

Git determine le commit median et lrsquoextraitTester et executer selon le resultat

git bisect good

git bisect bad

A la fin reste le commit responsable du bug

Creer une distribution avec git

(Alternative a la fonction drsquoautomake make dist)

Committer toutes les modifications y compris le nouveau nomde la version

Tagger le resultat

Utiliser archive pour produire une archive qui sera ladistribution source

git tag -a foo-13

git archive --prefix=foo-13 foo-13

| gzip -c - gt foo-13targz

Outils graphiques

gitk

git gui

qgit

giggle

Web browsers cgit gitweb

Integration avec eclipse

Installation

ajouter httpdownloadeclipseorgegitupdatescomme site de telechargement(Preferences rarr InstallUpdates)

installer EGit et JGit (Help rarr Install new software)

Eclipse peut alors gerer lrsquohistorique du projet avec git

Documentationhttpwwweclipseorgegitdocumentation

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix

exercice

repository dinnersshenvol2010traclaasfrgitenvol2010dinner

clonez le repository

creez votre branche personnelle

modifiez le code

utilisez les fichiers de compilation du TP automakearrangez le stylecorrigez des defauts dans le code

commitez vos modifs au fur et a mesure

synchronizez avec le repository central

visualisez les modifs faites par drsquoautres

fusionnez les modifs de plusieurs personnes pour faire unemeilleure version

Mise a jour depuis un repository

git pull

recupere les branches distantes dans le repository local

fusionne la branch distante par defaut dans la branchecouranteet commite le resultat

peut produire un conflit

Resoudre le conflitCommitter le resultat

Branches distantes

git branch -r

liste les branches distantes (originbranch)

Une branche distante peut etre suivie (fusionnee dans les 2 sens)avec

git checkout -t -b newbranch origingnewbranch

Utilisation de rebase avec les branches distantes

fecth recupere les commits distants sans les fusionner

git fetch

git rebase originmaster

Raccourci

git fetch

git rebase originmaster

Envoyer des commits vers un repository

git push

Transfere les commits locaux vers les branches distantes suiviesGenere une erreur si pas a jour (pull ou rebase drsquoabord)

Il faut transferer les tags separement

git push --tags

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Identifier les auteurs

git blame -- filetxt

Pour chaque ligne drsquoun fichier montre le dernier commit et sonauteur

Recherche par dissection drsquoun bug

git bissect permet de rechercher dans lrsquohistorique des commitslrsquoorigine drsquoun bug

git bisect start

git bisect bad la version courante est buguee

git bisect good v2633-rc2 derniere bonne version

Git determine le commit median et lrsquoextraitTester et executer selon le resultat

git bisect good

git bisect bad

A la fin reste le commit responsable du bug

Creer une distribution avec git

(Alternative a la fonction drsquoautomake make dist)

Committer toutes les modifications y compris le nouveau nomde la version

Tagger le resultat

Utiliser archive pour produire une archive qui sera ladistribution source

git tag -a foo-13

git archive --prefix=foo-13 foo-13

| gzip -c - gt foo-13targz

Outils graphiques

gitk

git gui

qgit

giggle

Web browsers cgit gitweb

Integration avec eclipse

Installation

ajouter httpdownloadeclipseorgegitupdatescomme site de telechargement(Preferences rarr InstallUpdates)

installer EGit et JGit (Help rarr Install new software)

Eclipse peut alors gerer lrsquohistorique du projet avec git

Documentationhttpwwweclipseorgegitdocumentation

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix

Mise a jour depuis un repository

git pull

recupere les branches distantes dans le repository local

fusionne la branch distante par defaut dans la branchecouranteet commite le resultat

peut produire un conflit

Resoudre le conflitCommitter le resultat

Branches distantes

git branch -r

liste les branches distantes (originbranch)

Une branche distante peut etre suivie (fusionnee dans les 2 sens)avec

git checkout -t -b newbranch origingnewbranch

Utilisation de rebase avec les branches distantes

fecth recupere les commits distants sans les fusionner

git fetch

git rebase originmaster

Raccourci

git fetch

git rebase originmaster

Envoyer des commits vers un repository

git push

Transfere les commits locaux vers les branches distantes suiviesGenere une erreur si pas a jour (pull ou rebase drsquoabord)

Il faut transferer les tags separement

git push --tags

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Identifier les auteurs

git blame -- filetxt

Pour chaque ligne drsquoun fichier montre le dernier commit et sonauteur

Recherche par dissection drsquoun bug

git bissect permet de rechercher dans lrsquohistorique des commitslrsquoorigine drsquoun bug

git bisect start

git bisect bad la version courante est buguee

git bisect good v2633-rc2 derniere bonne version

Git determine le commit median et lrsquoextraitTester et executer selon le resultat

git bisect good

git bisect bad

A la fin reste le commit responsable du bug

Creer une distribution avec git

(Alternative a la fonction drsquoautomake make dist)

Committer toutes les modifications y compris le nouveau nomde la version

Tagger le resultat

Utiliser archive pour produire une archive qui sera ladistribution source

git tag -a foo-13

git archive --prefix=foo-13 foo-13

| gzip -c - gt foo-13targz

Outils graphiques

gitk

git gui

qgit

giggle

Web browsers cgit gitweb

Integration avec eclipse

Installation

ajouter httpdownloadeclipseorgegitupdatescomme site de telechargement(Preferences rarr InstallUpdates)

installer EGit et JGit (Help rarr Install new software)

Eclipse peut alors gerer lrsquohistorique du projet avec git

Documentationhttpwwweclipseorgegitdocumentation

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix

Branches distantes

git branch -r

liste les branches distantes (originbranch)

Une branche distante peut etre suivie (fusionnee dans les 2 sens)avec

git checkout -t -b newbranch origingnewbranch

Utilisation de rebase avec les branches distantes

fecth recupere les commits distants sans les fusionner

git fetch

git rebase originmaster

Raccourci

git fetch

git rebase originmaster

Envoyer des commits vers un repository

git push

Transfere les commits locaux vers les branches distantes suiviesGenere une erreur si pas a jour (pull ou rebase drsquoabord)

Il faut transferer les tags separement

git push --tags

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Identifier les auteurs

git blame -- filetxt

Pour chaque ligne drsquoun fichier montre le dernier commit et sonauteur

Recherche par dissection drsquoun bug

git bissect permet de rechercher dans lrsquohistorique des commitslrsquoorigine drsquoun bug

git bisect start

git bisect bad la version courante est buguee

git bisect good v2633-rc2 derniere bonne version

Git determine le commit median et lrsquoextraitTester et executer selon le resultat

git bisect good

git bisect bad

A la fin reste le commit responsable du bug

Creer une distribution avec git

(Alternative a la fonction drsquoautomake make dist)

Committer toutes les modifications y compris le nouveau nomde la version

Tagger le resultat

Utiliser archive pour produire une archive qui sera ladistribution source

git tag -a foo-13

git archive --prefix=foo-13 foo-13

| gzip -c - gt foo-13targz

Outils graphiques

gitk

git gui

qgit

giggle

Web browsers cgit gitweb

Integration avec eclipse

Installation

ajouter httpdownloadeclipseorgegitupdatescomme site de telechargement(Preferences rarr InstallUpdates)

installer EGit et JGit (Help rarr Install new software)

Eclipse peut alors gerer lrsquohistorique du projet avec git

Documentationhttpwwweclipseorgegitdocumentation

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix

Utilisation de rebase avec les branches distantes

fecth recupere les commits distants sans les fusionner

git fetch

git rebase originmaster

Raccourci

git fetch

git rebase originmaster

Envoyer des commits vers un repository

git push

Transfere les commits locaux vers les branches distantes suiviesGenere une erreur si pas a jour (pull ou rebase drsquoabord)

Il faut transferer les tags separement

git push --tags

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Identifier les auteurs

git blame -- filetxt

Pour chaque ligne drsquoun fichier montre le dernier commit et sonauteur

Recherche par dissection drsquoun bug

git bissect permet de rechercher dans lrsquohistorique des commitslrsquoorigine drsquoun bug

git bisect start

git bisect bad la version courante est buguee

git bisect good v2633-rc2 derniere bonne version

Git determine le commit median et lrsquoextraitTester et executer selon le resultat

git bisect good

git bisect bad

A la fin reste le commit responsable du bug

Creer une distribution avec git

(Alternative a la fonction drsquoautomake make dist)

Committer toutes les modifications y compris le nouveau nomde la version

Tagger le resultat

Utiliser archive pour produire une archive qui sera ladistribution source

git tag -a foo-13

git archive --prefix=foo-13 foo-13

| gzip -c - gt foo-13targz

Outils graphiques

gitk

git gui

qgit

giggle

Web browsers cgit gitweb

Integration avec eclipse

Installation

ajouter httpdownloadeclipseorgegitupdatescomme site de telechargement(Preferences rarr InstallUpdates)

installer EGit et JGit (Help rarr Install new software)

Eclipse peut alors gerer lrsquohistorique du projet avec git

Documentationhttpwwweclipseorgegitdocumentation

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix

Envoyer des commits vers un repository

git push

Transfere les commits locaux vers les branches distantes suiviesGenere une erreur si pas a jour (pull ou rebase drsquoabord)

Il faut transferer les tags separement

git push --tags

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Identifier les auteurs

git blame -- filetxt

Pour chaque ligne drsquoun fichier montre le dernier commit et sonauteur

Recherche par dissection drsquoun bug

git bissect permet de rechercher dans lrsquohistorique des commitslrsquoorigine drsquoun bug

git bisect start

git bisect bad la version courante est buguee

git bisect good v2633-rc2 derniere bonne version

Git determine le commit median et lrsquoextraitTester et executer selon le resultat

git bisect good

git bisect bad

A la fin reste le commit responsable du bug

Creer une distribution avec git

(Alternative a la fonction drsquoautomake make dist)

Committer toutes les modifications y compris le nouveau nomde la version

Tagger le resultat

Utiliser archive pour produire une archive qui sera ladistribution source

git tag -a foo-13

git archive --prefix=foo-13 foo-13

| gzip -c - gt foo-13targz

Outils graphiques

gitk

git gui

qgit

giggle

Web browsers cgit gitweb

Integration avec eclipse

Installation

ajouter httpdownloadeclipseorgegitupdatescomme site de telechargement(Preferences rarr InstallUpdates)

installer EGit et JGit (Help rarr Install new software)

Eclipse peut alors gerer lrsquohistorique du projet avec git

Documentationhttpwwweclipseorgegitdocumentation

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Identifier les auteurs

git blame -- filetxt

Pour chaque ligne drsquoun fichier montre le dernier commit et sonauteur

Recherche par dissection drsquoun bug

git bissect permet de rechercher dans lrsquohistorique des commitslrsquoorigine drsquoun bug

git bisect start

git bisect bad la version courante est buguee

git bisect good v2633-rc2 derniere bonne version

Git determine le commit median et lrsquoextraitTester et executer selon le resultat

git bisect good

git bisect bad

A la fin reste le commit responsable du bug

Creer une distribution avec git

(Alternative a la fonction drsquoautomake make dist)

Committer toutes les modifications y compris le nouveau nomde la version

Tagger le resultat

Utiliser archive pour produire une archive qui sera ladistribution source

git tag -a foo-13

git archive --prefix=foo-13 foo-13

| gzip -c - gt foo-13targz

Outils graphiques

gitk

git gui

qgit

giggle

Web browsers cgit gitweb

Integration avec eclipse

Installation

ajouter httpdownloadeclipseorgegitupdatescomme site de telechargement(Preferences rarr InstallUpdates)

installer EGit et JGit (Help rarr Install new software)

Eclipse peut alors gerer lrsquohistorique du projet avec git

Documentationhttpwwweclipseorgegitdocumentation

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix

Identifier les auteurs

git blame -- filetxt

Pour chaque ligne drsquoun fichier montre le dernier commit et sonauteur

Recherche par dissection drsquoun bug

git bissect permet de rechercher dans lrsquohistorique des commitslrsquoorigine drsquoun bug

git bisect start

git bisect bad la version courante est buguee

git bisect good v2633-rc2 derniere bonne version

Git determine le commit median et lrsquoextraitTester et executer selon le resultat

git bisect good

git bisect bad

A la fin reste le commit responsable du bug

Creer une distribution avec git

(Alternative a la fonction drsquoautomake make dist)

Committer toutes les modifications y compris le nouveau nomde la version

Tagger le resultat

Utiliser archive pour produire une archive qui sera ladistribution source

git tag -a foo-13

git archive --prefix=foo-13 foo-13

| gzip -c - gt foo-13targz

Outils graphiques

gitk

git gui

qgit

giggle

Web browsers cgit gitweb

Integration avec eclipse

Installation

ajouter httpdownloadeclipseorgegitupdatescomme site de telechargement(Preferences rarr InstallUpdates)

installer EGit et JGit (Help rarr Install new software)

Eclipse peut alors gerer lrsquohistorique du projet avec git

Documentationhttpwwweclipseorgegitdocumentation

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix

Recherche par dissection drsquoun bug

git bissect permet de rechercher dans lrsquohistorique des commitslrsquoorigine drsquoun bug

git bisect start

git bisect bad la version courante est buguee

git bisect good v2633-rc2 derniere bonne version

Git determine le commit median et lrsquoextraitTester et executer selon le resultat

git bisect good

git bisect bad

A la fin reste le commit responsable du bug

Creer une distribution avec git

(Alternative a la fonction drsquoautomake make dist)

Committer toutes les modifications y compris le nouveau nomde la version

Tagger le resultat

Utiliser archive pour produire une archive qui sera ladistribution source

git tag -a foo-13

git archive --prefix=foo-13 foo-13

| gzip -c - gt foo-13targz

Outils graphiques

gitk

git gui

qgit

giggle

Web browsers cgit gitweb

Integration avec eclipse

Installation

ajouter httpdownloadeclipseorgegitupdatescomme site de telechargement(Preferences rarr InstallUpdates)

installer EGit et JGit (Help rarr Install new software)

Eclipse peut alors gerer lrsquohistorique du projet avec git

Documentationhttpwwweclipseorgegitdocumentation

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix

Creer une distribution avec git

(Alternative a la fonction drsquoautomake make dist)

Committer toutes les modifications y compris le nouveau nomde la version

Tagger le resultat

Utiliser archive pour produire une archive qui sera ladistribution source

git tag -a foo-13

git archive --prefix=foo-13 foo-13

| gzip -c - gt foo-13targz

Outils graphiques

gitk

git gui

qgit

giggle

Web browsers cgit gitweb

Integration avec eclipse

Installation

ajouter httpdownloadeclipseorgegitupdatescomme site de telechargement(Preferences rarr InstallUpdates)

installer EGit et JGit (Help rarr Install new software)

Eclipse peut alors gerer lrsquohistorique du projet avec git

Documentationhttpwwweclipseorgegitdocumentation

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix

Outils graphiques

gitk

git gui

qgit

giggle

Web browsers cgit gitweb

Integration avec eclipse

Installation

ajouter httpdownloadeclipseorgegitupdatescomme site de telechargement(Preferences rarr InstallUpdates)

installer EGit et JGit (Help rarr Install new software)

Eclipse peut alors gerer lrsquohistorique du projet avec git

Documentationhttpwwweclipseorgegitdocumentation

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix

Integration avec eclipse

Installation

ajouter httpdownloadeclipseorgegitupdatescomme site de telechargement(Preferences rarr InstallUpdates)

installer EGit et JGit (Help rarr Install new software)

Eclipse peut alors gerer lrsquohistorique du projet avec git

Documentationhttpwwweclipseorgegitdocumentation

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix

Agenda

1 Introduction

2 Concepts de Git

3 Developpeur isole

4 Utilisation des branches

5 Travailler a plusieurs

6 Autres fonctionnalites

7 Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix

Git pour utilisateurs de CVS

CVS git

checkout cloneupdate pullcommit commit -a + pushadd addremove rmdiff difflog log

  • Introduction
  • Concepts de Git
  • Deacuteveloppeur isoleacute
  • Utilisation des branches
  • Travailler agrave plusieurs
  • Autres fonctionnaliteacutes
  • Appendix