Top Banner
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
21

Petit Déjeuner Git chez Makina Corpus

Jun 23, 2015

Download

Technology

leplatrem

18 Octobre 2011
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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