SlideShare a Scribd company logo
---
   +++
                                      Chicago ALT.NET
                                       June 10th 2009

Sergio Pereira
      sergio@sergiopereira.com
      http://sergiopereira.com/blog
      @sergiopereira
                             1
Linux kernel development

        Linus Torvalds, mid-2005

                  Replaces BitKeeper

                               Perl  C
                     2
msysGit: wizard-style installer


installer or macports


packaged (apt, yum, rpm)

          3
compile from source!



   4
Git on
Windows

          5
6
1st class citizens

     Local or remote

      Low ceremony

No politics, no conventions

 Branch, branch, branch




 7
Download deltas

           Local merge (fast)

          No magic for conflicts

Tracks change authors and committer




      8
• HTTP, HTTPS
• GIT
• File system
• SSH
• rsync
• patch files ;)


       9
.git            Git          Object
directory       commands       database
 Repository                    Compression
                  High level
                 (porcelain)   Encryption
Configuration                     Blobs

 References                       Trees
                  Low level     Commits
                 (plumbing)
   Hooks                          Tags

                     10
• Secure Hash Algorithm
        • Global identity
        • Authenticity


da9973c6f9600d90e64aac647f3ed22dfd692f70

                  11
BLOB
using System.IO;
public class Whatever
{
  // …
}

       5,811 bytes
 d56210fee9133…

          12
TREE
blob   web.config    4df3bb723…
blob   global.asax   aee87dc6a…
tree   bin           d1c4a7220…
tree   images        6f32f4409…
…

             301 bytes
       61bcb4a4f922e…

               13
COMMIT
tree   4df3bb723…
parent aee87dc6a…
author
     Joe Dev <joe@acme.com>
     2009-04-03 13:45 -0600
committer
     Zack Fu <zack@acme.com>
     2009-04-07 09:03 -0800

Added ability to pay with
international credit cards…

             1,082 bytes

         cbc72a29fd…
                14
TAG
type    commit
object cbc72a29fd…
name    v1.9.23
tagger
     Zack Fu <zack@acme.com>
     2009-04-06 17:56 -0800

This release contains the
improvements made to…

              221 bytes

          836dd4aa…
                15
Git Object
  Model

             16
commit: cbc72a29…




            tree: 61bcb4a4…



tree: 8e6ac483…               d56210fe…




ca579aa3…                     ef49a6c6…


                                  17
commit: cbc72a29…                       commit: b3a90c64…
                                parent


            tree: 61bcb4a4…               tree: 4d5fee12…



tree: 8e6ac483…               d56210fe…              tree: 385de46a…




ca579aa3…                     ef49a6c6…                       37bf5ee1…


                                  18
working directory                  index                   master




                    git add                git commit

                                                git push




                                                        origin/master

                              19
*D
            F

    E           E             E            E

D           D            D
    C           C             C            C

B           B            B             B


A           A            A             A


    MERGE                    REBASE



                    20
Gitting
Getting
to work

           21
SHA fragment                         Remote name

git cat-file commit a6ed              git log origin/master
                                      git log refs/remotes/origin/master




 Branch name                             Tag name
git log some-branch                   git log v2.2.5
git log refs/heads/some-branch        git log refs/tags/v2.2.5




                                 22
By date                                Caret parent

git ls-tree "master@{3 days ago}"         git ls-tree my-branch^
git ls-tree master@{yesterday}            git ls-tree my-branch^2
git ls-tree master@{2009-04-22}           git ls-tree my-branch^^^^




 By sequence                               Tilde parent
git ls-tree master@{3}                    git ls-tree my-branch~3 [^^^]




                         git ls-tree master~3^2~4

                                    23
Natural
                        dev2




          dev1

                               dev4



                      dev3




                 24
Central Repo                 dev2




         dev1
                            shared


                                     dev4


                dev3


                       25
Benevolent
                         blessed
Dictator     dev1
                                                   boss




             dev2                  lead1



             dev3

                                           lead2
             dev4
                    26
Integration           dev1          dev1'

Manager

              boss'          boss




   dev2       dev2'                         dev3   dev3'




                              27
GitHub:
Social Forking

             28
29
(see you next month to learn more about Fluent NHibernate)

                           30

More Related Content

PPT
Linux Commands
ODP
Rpm Introduction
PPT
101 3.3 perform basic file management
PPT
101 3.3 perform basic file management
PPT
3.3 perform basic file management
PDF
The Linux Command Cheat Sheet
PDF
GIT: Content-addressable filesystem and Version Control System
PDF
Sacándole jugo a git
Linux Commands
Rpm Introduction
101 3.3 perform basic file management
101 3.3 perform basic file management
3.3 perform basic file management
The Linux Command Cheat Sheet
GIT: Content-addressable filesystem and Version Control System
Sacándole jugo a git

What's hot (20)

PPTX
Linux And perl
PDF
Basic shell commands by Jeremy Sanders
PDF
Docker and friends at Linux Days 2014 in Prague
DOC
Sample Build Automation Commands
PDF
Linux Kernel 개발참여방법과 문화 (Contribution)
PPTX
Linux Survival Kit for Proof of Concept & Proof of Technology
PDF
Postgresql on NFS - J.Battiato, pgday2016
PPTX
GlusterFS Basics for OpenStack
PDF
Software Packaging for Cross OS Distribution
PPT
Working with core dump
PDF
Redhat 6 & 7
PDF
Basic linux commands for bioinformatics
PPT
Redis深入浅出
PDF
Linux Basic Commands
PPT
Qt native built for raspberry zero
PDF
Putting some "logic" in LVM.
PDF
On cassandra's evolution @ Berlin buzzwords
PDF
NDMPCOPY lun from 7-mode NetApp to cDOT
PDF
A Journey to Boot Linux on Raspberry Pi
PDF
Basic linux commands
Linux And perl
Basic shell commands by Jeremy Sanders
Docker and friends at Linux Days 2014 in Prague
Sample Build Automation Commands
Linux Kernel 개발참여방법과 문화 (Contribution)
Linux Survival Kit for Proof of Concept & Proof of Technology
Postgresql on NFS - J.Battiato, pgday2016
GlusterFS Basics for OpenStack
Software Packaging for Cross OS Distribution
Working with core dump
Redhat 6 & 7
Basic linux commands for bioinformatics
Redis深入浅出
Linux Basic Commands
Qt native built for raspberry zero
Putting some "logic" in LVM.
On cassandra's evolution @ Berlin buzzwords
NDMPCOPY lun from 7-mode NetApp to cDOT
A Journey to Boot Linux on Raspberry Pi
Basic linux commands
Ad

Viewers also liked (19)

PPTX
الدرس الرابع: عمليات خدمة المحصول
DOCX
PPTX
Industrial training report
PDF
CSHons_FinalPaper_MLNZAC001
PDF
4 techniques of translation
PPTX
CQRS In An Hour Or So
PDF
Bienvenidos 3
PPTX
Presentation 5.4
DOC
Resume_Milind_Dhake
PDF
Proven Techniques for Test and Assessment Translation and Adaptation!
PPTX
E purchasing technology drives new economics for commerce
PDF
Escritorio de marcas
DOCX
Universidad yacambú ingles tema3
PPTX
ePurchasing Technology Drives New Economics for Commerce - Forrester
PDF
October Policy Talks_V1
PDF
CouchDB at its Core: Global Data Storage and Rich Incremental Indexing at Clo...
PPTX
It is Time for the Supernatural!
PPTX
Social Selling - Linked In Dave Anderson
PPT
Magic and religion lecture
الدرس الرابع: عمليات خدمة المحصول
Industrial training report
CSHons_FinalPaper_MLNZAC001
4 techniques of translation
CQRS In An Hour Or So
Bienvenidos 3
Presentation 5.4
Resume_Milind_Dhake
Proven Techniques for Test and Assessment Translation and Adaptation!
E purchasing technology drives new economics for commerce
Escritorio de marcas
Universidad yacambú ingles tema3
ePurchasing Technology Drives New Economics for Commerce - Forrester
October Policy Talks_V1
CouchDB at its Core: Global Data Storage and Rich Incremental Indexing at Clo...
It is Time for the Supernatural!
Social Selling - Linked In Dave Anderson
Magic and religion lecture
Ad

Similar to Git Without Puns (20)

PDF
M.Mozūras - git
PDF
GIT rozproszony system kontroli wersji
PDF
Gitting It Under (Version) Control
PDF
Introducción a git y GitHub
PDF
Git and Github
PDF
Git in action
PDF
Docker 활용법: dumpdocker
PPTX
Get Good With Git
PDF
T3dd10 git
ODP
Introduction to Git (Greg Lonnon)
PDF
Git the Docs: A fun, hands-on introduction to version control
PDF
slides.pdf
PDF
slides.pdf
KEY
Git使用
PDF
That's (g)it! par Sébastien Dawans CETIC
PDF
Version Control and Git - GitHub Workshop
PPT
390a gitintro 12au
KEY
Working with Git
PDF
Learning Git with Workflows
PDF
簡單介紹git
M.Mozūras - git
GIT rozproszony system kontroli wersji
Gitting It Under (Version) Control
Introducción a git y GitHub
Git and Github
Git in action
Docker 활용법: dumpdocker
Get Good With Git
T3dd10 git
Introduction to Git (Greg Lonnon)
Git the Docs: A fun, hands-on introduction to version control
slides.pdf
slides.pdf
Git使用
That's (g)it! par Sébastien Dawans CETIC
Version Control and Git - GitHub Workshop
390a gitintro 12au
Working with Git
Learning Git with Workflows
簡單介紹git

Recently uploaded (20)

PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
A Presentation on Artificial Intelligence
PDF
Empathic Computing: Creating Shared Understanding
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Machine learning based COVID-19 study performance prediction
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PPTX
Big Data Technologies - Introduction.pptx
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PPT
Teaching material agriculture food technology
PDF
Electronic commerce courselecture one. Pdf
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Encapsulation theory and applications.pdf
PPTX
Spectroscopy.pptx food analysis technology
Network Security Unit 5.pdf for BCA BBA.
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
A Presentation on Artificial Intelligence
Empathic Computing: Creating Shared Understanding
Encapsulation_ Review paper, used for researhc scholars
Machine learning based COVID-19 study performance prediction
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
NewMind AI Weekly Chronicles - August'25-Week II
Assigned Numbers - 2025 - Bluetooth® Document
Big Data Technologies - Introduction.pptx
gpt5_lecture_notes_comprehensive_20250812015547.pdf
The Rise and Fall of 3GPP – Time for a Sabbatical?
Teaching material agriculture food technology
Electronic commerce courselecture one. Pdf
The AUB Centre for AI in Media Proposal.docx
Mobile App Security Testing_ A Comprehensive Guide.pdf
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Encapsulation theory and applications.pdf
Spectroscopy.pptx food analysis technology

Git Without Puns

  • 1. --- +++ Chicago ALT.NET June 10th 2009 Sergio Pereira sergio@sergiopereira.com http://sergiopereira.com/blog @sergiopereira 1
  • 2. Linux kernel development Linus Torvalds, mid-2005 Replaces BitKeeper Perl  C 2
  • 3. msysGit: wizard-style installer installer or macports packaged (apt, yum, rpm) 3
  • 6. 6
  • 7. 1st class citizens Local or remote Low ceremony No politics, no conventions Branch, branch, branch 7
  • 8. Download deltas Local merge (fast) No magic for conflicts Tracks change authors and committer 8
  • 9. • HTTP, HTTPS • GIT • File system • SSH • rsync • patch files ;) 9
  • 10. .git Git Object directory commands database Repository Compression High level (porcelain) Encryption Configuration Blobs References Trees Low level Commits (plumbing) Hooks Tags 10
  • 11. • Secure Hash Algorithm • Global identity • Authenticity da9973c6f9600d90e64aac647f3ed22dfd692f70 11
  • 12. BLOB using System.IO; public class Whatever { // … } 5,811 bytes d56210fee9133… 12
  • 13. TREE blob web.config 4df3bb723… blob global.asax aee87dc6a… tree bin d1c4a7220… tree images 6f32f4409… … 301 bytes 61bcb4a4f922e… 13
  • 14. COMMIT tree 4df3bb723… parent aee87dc6a… author Joe Dev <joe@acme.com> 2009-04-03 13:45 -0600 committer Zack Fu <zack@acme.com> 2009-04-07 09:03 -0800 Added ability to pay with international credit cards… 1,082 bytes cbc72a29fd… 14
  • 15. TAG type commit object cbc72a29fd… name v1.9.23 tagger Zack Fu <zack@acme.com> 2009-04-06 17:56 -0800 This release contains the improvements made to… 221 bytes 836dd4aa… 15
  • 16. Git Object Model 16
  • 17. commit: cbc72a29… tree: 61bcb4a4… tree: 8e6ac483… d56210fe… ca579aa3… ef49a6c6… 17
  • 18. commit: cbc72a29… commit: b3a90c64… parent tree: 61bcb4a4… tree: 4d5fee12… tree: 8e6ac483… d56210fe… tree: 385de46a… ca579aa3… ef49a6c6… 37bf5ee1… 18
  • 19. working directory index master git add git commit git push origin/master 19
  • 20. *D F E E E E D D D C C C C B B B B A A A A MERGE REBASE 20
  • 22. SHA fragment Remote name git cat-file commit a6ed git log origin/master git log refs/remotes/origin/master Branch name Tag name git log some-branch git log v2.2.5 git log refs/heads/some-branch git log refs/tags/v2.2.5 22
  • 23. By date Caret parent git ls-tree "master@{3 days ago}" git ls-tree my-branch^ git ls-tree master@{yesterday} git ls-tree my-branch^2 git ls-tree master@{2009-04-22} git ls-tree my-branch^^^^ By sequence Tilde parent git ls-tree master@{3} git ls-tree my-branch~3 [^^^] git ls-tree master~3^2~4 23
  • 24. Natural dev2 dev1 dev4 dev3 24
  • 25. Central Repo dev2 dev1 shared dev4 dev3 25
  • 26. Benevolent blessed Dictator dev1 boss dev2 lead1 dev3 lead2 dev4 26
  • 27. Integration dev1 dev1' Manager boss' boss dev2 dev2' dev3 dev3' 27
  • 29. 29
  • 30. (see you next month to learn more about Fluent NHibernate) 30