Présentation de git
Upcoming SlideShare
Loading in...5
×
 

Présentation de git

on

  • 1,761 views

Une présentation de Git en français

Une présentation de Git en français

Statistics

Views

Total Views
1,761
Views on SlideShare
1,757
Embed Views
4

Actions

Likes
1
Downloads
26
Comments
0

2 Embeds 4

http://www.linkedin.com 3
http://www.slideshare.net 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Présentation de git Présentation de git Presentation Transcript

  • Git
  • http://martinfowler.com/bliki/VcsSurvey.html
  • Un peu d’histoire…
  • Noyau Linux :
    ~ 150 Mo de code source
    des milliers de contributeurs aux 4 coins du monde
    nécessité de release très stables
    Maintenu pendant des années via patch / emails
    Puis BitKeeper
  • BitKeeper cesse d’attribuer des licences aux développeurs du noyeau
    Linus Thorvald qui déteste tous les outils existants, se décide à développer son propre outil pour ses besoins
    Git ? Linus aime appeler les produits qu’il crée par son nom…
    http://www.youtube.com/watch?v=4XpnKHJAok8
  • Qu’est-ce que Git ?
  • Git
    Est un SCM distribué
    Garde le contenu d’un ensemble de répertoire (et non le contenant)
    Garde les révisions du repository et non des fichiers
    Possède une interface rudimentaire
    Est très fiable
    Est rapide
  • RAPIDE
  • RAPIDE
  • Différence centralisé / distribué
    Client
    Client
    Repository
    Client
    Client
    Client
    Client
  • Différence centralisé / distribué
    Client
    Client
    Client
    Client
  • Repository local
    Client
    Client
    Repository
    Repository
    • Chaque client Git possède son propre repository
    • Chaque repository contient l’intégralité de l’historique connu du client
    • Tous les commits
    • Toutes les branches
    • Tous les tags
    • Chaque élément est identifié de façon unique par un SHA-1 de son contenu, ainsi que le SHA-1 des parents
    • Les éléments identiques entre les repositories possèdent donc le même SHA-1
    • Possibilité de créer des « barerepositories »
  • Repository local
    Repository
    Commit
    Staging area
    (index)
    Checkout
    Stage
    Working directory
  • Protocoles de communication
    Git n’implémente aucun protocole particulier, il se repose sur des implémentations existantes
    file://
    http(s)://
    git://
    ssh://
    rsync://
    bundles
    patchs
  • Stockage des versions
    Changements
    Snapshots - Git
  • Branching & Merging
  • $ git init
    $ git add file.txt
    $ git commit -m "Initial Commit"
  • $ git init
    $ git add file.txt
    $ git commit -m "Initial Commit"
    [master (root-commit) 745a6ef] Initial Commit
    1 files changed, 1 insertions(+), 0 deletions(-)
    create mode 100644 file.txt
    HEAD
    Pointeur de working directory
    master
    Branche
    745a6ef
  • $ git add file2.txt file3.txt
    $ git commit -m "Added file2 file3"  
    [master aa2507d] Added file2 file3
    2 files changed, 2 insertions(+), 0 deletions(-)
    create mode 100644 file2.txt
    create mode 100644 file3.txt
    HEAD
    master
    745a6ef
    aa2507d
  • $ notepad file2.txt
    $ git commit -a -m "Changed file2"  
    [master 841036d] Changed file2
    1 files changed, 2 insertions(+), 1 deletions(-)
    HEAD
    master
    745a6ef
    aa2507d
    841036d
  • $ git branchmyidea
    HEAD
    master
    745a6ef
    aa2507d
    841036d
    myidea
  • $ git checkoutmyidea
    Switched to branch 'myidea'
    master
    745a6ef
    aa2507d
    841036d
    myidea
    HEAD
  • $ notepad file3.txt
    $ git commit -a -m "Changed file3" 
    [myidea 54d9dde] Changed file3
    1 files changed, 2 insertions(+), 1 deletions(-)
    master
    745a6ef
    aa2507d
    841036d
    54d9dde
    myidea
    HEAD
  • $ git checkout master
    Switched to branch 'master'
    HEAD
    master
    745a6ef
    aa2507d
    841036d
    54d9dde
    myidea
  • $ notepad file2.txt
    $ git commit -a -m "Changed file2" 
    [master 9143561] Changed file2
    1 files changed, 2 insertions(+), 1 deletions(-)
    HEAD
    master
    9143561
    745a6ef
    aa2507d
    841036d
    54d9dde
    myidea
  • $ git add file4.txt
    $ git commit -m "Added file4" 
    [master 7201070] Added file4
    1 files changed, 1 insertions(+), 0 deletions(-)
    create mode 100644 file4.txt
    HEAD
    master
    9143561
    7201070
    aa2507d
    841036d
    54d9dde
    myidea
  • $ git mergemyidea
    Merge made by recursive.
    file3.txt | 3 ++-
    1 files changed, 2 insertions(+), 1 deletions(-)
    HEAD
    master
    9143561
    7201070
    e815ec4
    aa2507d
    841036d
    54d9dde
    myidea
  • $ git checkoutmyidea
    Switched to branch 'myidea'
    master
    9143561
    7201070
    e815ec4
    aa2507d
    841036d
    54d9dde
    myidea
    HEAD
  • $ notepad file.txt
    $ git commit -a -m "Changed file.txt« 
    [myidea c26e3c5] Changed file.txt
    1 files changed, 2 insertions(+), 1 deletions(-)
    master
    9143561
    7201070
    e815ec4
    841036d
    54d9dde
    c26e3c5
    myidea
    HEAD
  • $ git checkout master
    Switched to branch 'master'
    HEAD
    master
    9143561
    7201070
    e815ec4
    841036d
    54d9dde
    c26e3c5
    myidea
  • $ git merge myidea
    Merge made by recursive.
    file.txt | 3 ++-
    1 files changed, 2 insertions(+), 1 deletions(-)
    HEAD
    master
    9143561
    7201070
    e815ec4
    56c6f2d
    54d9dde
    c26e3c5
    myidea
  • $ git merge myidea
    Already up-to-date.
    $ git merge myidea
    Already up-to-date.
    HEAD
    master
    9143561
    7201070
    e815ec4
    56c6f2d
    54d9dde
    c26e3c5
    myidea
  • $ git branch -d myidea
    Deleted branch myidea (was c26e3c5).
    HEAD
    master
    9143561
    7201070
    e815ec4
    56c6f2d
    54d9dde
    c26e3c5
  • Remotes (branches)
  • github.com/project.git
    master
    a6b4c
    f42c5
  • $ cd Sources
    $ git clone git@github.com/project.git
    github.com/project.git
    master
    a6b4c
    f42c5
    Sources/project
    origin/master
    a6b4c
    f42c5
    master
  • github.com/project.git
    master
    a6b4c
    f42c5
    31b8e
    190a3
    Sources/project
    origin/master
    a6b4c
    f42c5
    master
  • $ ...
    github.com/project.git
    master
    a6b4c
    f42c5
    31b8e
    190a3
    Sources/project
    origin/master
    a6b4c
    f42c5
    a38de
    893cf
    master
  • $ git fetch origin
    github.com/project.git
    master
    a6b4c
    f42c5
    31b8e
    190a3
    Sources/project
    origin/master
    31b8e
    190a3
    a6b4c
    f42c5
    a38de
    893cf
    master
  • $ git merge origin
    github.com/project.git
    master
    a6b4c
    f42c5
    31b8e
    190a3
    Sources/project
    origin/master
    31b8e
    190a3
    967ef
    a6b4c
    f42c5
    a38de
    893cf
    master
  • $ git push origin
    github.com/project.git
    master
    31b8e
    190a3
    967ef
    a6b4c
    f42c5
    a38de
    893cf
    Sources/project
    origin/master
    31b8e
    190a3
    967ef
    a6b4c
    f42c5
    a38de
    893cf
    master
  • Topics Branches
  • Topics Branches - un exemple
    master
    livraison
    development
    intégration
    intégration
    feature 1
    feature 2
    dumb
  • Workflows
  • Commandes de base
    $ git init / git clone
    $ git add
    $ git commit
    $ git checkout
    $ git merge
    $ git push
    $ git pull = fetch + merge
  • Centralisé
    Client
    Client
    Client
    Client
    Client
    Client
    Repository
    Repository
    Repository
    Repository
    Repository
    Repository
    Repository
  • Dictateur / Lieutenants
    Blessed
    Repository
    Dictateur
    Lieutenant
    Développeur
    Développeur
    Lieutenant
    Développeur
    Repository
    Repository
    Repository
    Repository
    Repository
    Repository
  • Github
    Développeur
    Développeur
    Repository
    Repository
    Public
    Repository
    Public
    Repository
    Public
    Repository
    Développeur
    Repository
  • Fonctionnalités Avancées
  • Réécrire l’histoire :
    amendcommits
    permet de reprendre le dernier commit, comme si rien ne s’était passé
    rebase
    alternative au merge, qui efface la trace de la branche en appliquant des patchs étapes par étapes
    Gagner du temps :
    bisect : recherche de régression étape par étape
    rerere : apprendre à Git la manière de merger automatiquement les conflits
    Signature GPG des tags
    git svn

  • Démonstration
  • Sources
  • http://git-scm.com
    http://progit.org
    http://tekpub.com/preview/git
    http://gitcasts.com