21
Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011. Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011. La gestion de version avec Git ([ it] ʒ [git]) mathieu.leplatre@makina-corpus.com

Petit Déjeuner Git chez Makina Corpus

Embed Size (px)

DESCRIPTION

18 Octobre 2011

Citation preview

Page 1: Petit Déjeuner Git chez Makina Corpus

Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.

La gestion de version avec

Git([ it]ʒ [git])

[email protected]

Page 2: Petit Déjeuner Git chez Makina Corpus

Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.

La petite histoireLes avantages

Scénario d'utilisation

Page 3: Petit Déjeuner Git chez Makina Corpus

Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.

SubVersioN : CVS done right

«There is no way to do CVS right. »

- Linus Torvalds

Page 4: Petit Déjeuner Git chez Makina Corpus

Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.

La petite histoireLes avantages

Scénario d'utilisation

Page 5: Petit Déjeuner Git chez Makina Corpus

Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.

La Petite Histoire

2002● Linus choisit BitKeeper pour le noyau Linux

● « Merge » facilité

● Non-linéaire

● Décentralisé

2005● 17000 fichiers, 6 millions de lignes● 400 développeurs● 3 patches/heure, 3200 lignes/jour● Une version = 5000 patchs

Page 6: Petit Déjeuner Git chez Makina Corpus

Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.

La Petite Histoire

2005● 5 Avril : BitKeeper devient payant● 6 Avril : Linus annonce son prototype « Git »● 7 Avril : Une instance est hébergée chez lui● 18 Avril : Merge multiple de branches● 16 Juin : Sortie du noyau 2.6.12 géré sur Git

2011● Septembre : 1 million d'utilisateurs sur GitHub

Page 7: Petit Déjeuner Git chez Makina Corpus

Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.

« I'm an egotistical bastard, and I name all my projects after myself. First Linux, now git. »

- Linus Torvalds

Page 8: Petit Déjeuner Git chez Makina Corpus

Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.

La petite histoireLes avantages

Scénario d'utilisation

Page 9: Petit Déjeuner Git chez Makina Corpus

Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.

Les Avantages : 1 - décentralisé

● Local● N'importe où !

● Mode déconnecté

● Serveur facultatif

● Distant● Branche par branche

● Publication● Déploiement

● ex : heroku.com

/home

Dev

@server

Public

SVN

Page 10: Petit Déjeuner Git chez Makina Corpus

Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.

Les Avantages : 2 – léger

● Un clone parfait● = complet

● Rapide !● Réseau seulement pour synchroniser

● Ultra-performant !● Ne stocke que les « diff » 

● Ex : Mozilla 12Go 420Mo→

● Branches et Tags● = fichiers métadonnées

● Transport : SSH, FTP, HTTP, WebDAV, Email...

Page 11: Petit Déjeuner Git chez Makina Corpus

Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.

Les Avantages : 3 – branché

$ svn merge -r11:10 http://svn/svn/my_repos/test$ svn: REPORT request failed on '/svn/my_repos/!svn/bc/11/test'

$ svn: MERGE request failed on '/svn/repository/trunk'$ svn: MERGE of '/svn/repository/trunk': 200 OK (http://svn.myserver.com)

Page 12: Petit Déjeuner Git chez Makina Corpus

Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.

Les Avantages : 3 – branché

● Vue graphique● Locales et/ou distantes● Algorithmes de fusion (« merge »)● Déplacement (« rebase »)● Avec suivi (« track »)

Page 13: Petit Déjeuner Git chez Makina Corpus

Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.

Les Avantages : 3 – branché

● Manipulation facilitée● C'est le core committer celui qui développe, qui gère les conflits !

● « pull request »

● Nouveaux paradigmes (« Git Flow »)● 1 version = 1 branche

● 1 feature = 1 branche

● Brouillon ? branche !→

● Temporaire ? branche !→

● Interrompu ? branche !→

Page 14: Petit Déjeuner Git chez Makina Corpus

Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.

La petite histoireLes avantages

Scénario d'utilisation

Page 15: Petit Déjeuner Git chez Makina Corpus

Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.

Scénario d'utilisation

● Initialisation

$ cd demo$ git init .Initialized empty Git repository

● Premières contributions dans master

$ git add README$ git commit -m "Premier"

(edition de README)$ git commit -a -m "Deuxième"

gitg est ton ami

Local!

Page 16: Petit Déjeuner Git chez Makina Corpus

Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.

Scénario d'utilisation

● Ajout d'un dépôt distant

$ git remote add origin git://you@server/demo.git/ 

● Synchronisation : envoi

$ git push origin master

● Synchronisation : réception

$ git pull origin master

● commit != push

DistantLocal

Page 17: Petit Déjeuner Git chez Makina Corpus

Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.

Scénario d'utilisation

● Travail en local

● Collaboration

$ git fetch origin

● Fusion !

$ git merge origin/master

git pull = Fetch+Merge

Désynchro

LocalDistant

Commit ajouté

Page 18: Petit Déjeuner Git chez Makina Corpus

Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.

Scénario d'utilisation

● Nouvelle branche

$ git branch refactor$ git checkout refactor......$ git commit -m "Changement"

● Fusionner avec master

$ git merge master

● Repositionner refactor

$ git rebase master

Départ

ou

Page 19: Petit Déjeuner Git chez Makina Corpus

Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.

Scénario d'utilisation

● Tagger une version

$ git tag 1.0

● Se rendre à un commit antérieur

$ git checkout 1.0

$ git checkout 0ec2ab

● Annuler les derniers commits

$ git reset HEAD~1

Page 20: Petit Déjeuner Git chez Makina Corpus

Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.

Et maintenant ?

$ sudo aptitude install git

● Dispo sur GNU/Linux, OS X, BSD, Solaris, AIX, BeOS... et Windows● Eclipse Indigo 3.7 : Egit● TurtoiseGit● git-svn : mirroir Git d'un dépôt Subversion● git mergetool : Utilise meld par ex. pour résoudre les conflits

● Server Git  = Server SSH + git init --bare /path/repo● http://github.com● http://gitorious.org

Page 21: Petit Déjeuner Git chez Makina Corpus

Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.

ReconVersion

SubVersion Git

trunk master

svn checkout git clone (+git checkout)

svn commit git commit -a + git push

svn update git pull

svn add git add

svn merge -r 20:HEAD http://example.com/svn/branches/branch

git merge branch

svn copy http://example.com/svn/trunk http://example.com/svn/tags/name

git tag name

svn copy http://example.com/svn/trunk http://example.com/svn/branches/branchsvn switch http://example.com/svn/branches/branch

git branch branchgit checkout branch