SlideShare a Scribd company logo
1 of 166
Download to read offline
Sei (k)ein
Blödmann
und nimm Git!
Einführung in Versionskontrolle mit Git




Stefan Imhoff
stefanimhoff.de
Django-UserGroup Hamburg
04.08.2009
Git       /gɪt/
Nomen (Britisch, Slang)



1.   Blödmann, Depp, Idiot
»Ich bin ein egoistischer Bastard und
benenne alle meine Projekte nach mir selbst.
Zuerst Linux, jetzt Git.«
                                 – Linus Torvalds
Fakten & Statistiken
     Warum Git die Mitbewerber abhängt
Init (Sekunden)




                           0,60



              0,059
0,024

 Git        Mercurial     Bazaar


                          Quelle: Scott Chacon, whygitisbetterthanx.com
Add (Sekunden)




8,535



             0,368       2,381

 Git       Mercurial     Bazaar


                         Quelle: Scott Chacon, whygitisbetterthanx.com
Status (Sekunden)




                            14,744



0,451          1,946
 Git         Mercurial      Bazaar


                            Quelle: Scott Chacon, whygitisbetterthanx.com
Diff (Sekunden)




                          14,248



0,543         2,189

 Git        Mercurial     Bazaar


                          Quelle: Scott Chacon, whygitisbetterthanx.com
Tag (Sekunden)




                         1,892

             1,201

0,056

 Git       Mercurial     Bazaar


                         Quelle: Scott Chacon, whygitisbetterthanx.com
Log (Sekunden)




                         9,055


0,711        2,65

 Git       Mercurial     Bazaar


                         Quelle: Scott Chacon, whygitisbetterthanx.com
Commit, groß (Sekunden)




                        23,002

12,48        12,5


 Git       Mercurial    Bazaar


                        Quelle: Scott Chacon, whygitisbetterthanx.com
Commit, klein (Sekunden)




                        1,139

            0,517
0,086

 Git      Mercurial    Bazaar


                        Quelle: Scott Chacon, whygitisbetterthanx.com
Branch, kalt (Sekunden)




                94,681
                            82,249



1,161
 Git           Mercurial    Bazaar


                             Quelle: Scott Chacon, whygitisbetterthanx.com
Branch, heiß (Sekunden)




                        39,411



             12,3
0,07
Git        Mercurial    Bazaar


                         Quelle: Scott Chacon, whygitisbetterthanx.com
Repository (MB)
                Gesamtes Verzeichnis (MB)
                                   64
                                                       61
                        53
           43                 45
                  34
24



     Git          Mercurial   Bazaar    Subversion


                                        Quelle: Scott Chacon, whygitisbetterthanx.com
Clone (Sekunden)




                   311

119     144
                                   64

Git   Mercurial   Bazaar   Subversion


                           Quelle: Scott Chacon, whygitisbetterthanx.com
Theorie & Grundlagen
      Wer das versteht, ist klar im Vorteil …
.git
SHA-I
Hallo, Welt!
8095a184a9b9ae8a14a0f0cde697c7f7cf1410e6
Meta-Informationen
(Datum, Name, Ort)
Warum?
• Konsistente Inhalte
• Gleicher Inhalt = gleicher Blob
Objekte
• blobs
• trees
• commits
• tags
Blobs
Dateiinhalte
Trees
• blobs
• trees
Commits
• tree
• parent
• author
• commiter
• message
• datetime
Tags
• object
• type
• tagger
• message
Konfiguration
    Sag mir wie du heißt, Baby!
git config
git config --global user.name "Stefan Imhoff"
git config --global user.email "stefan@imhoff.name"
.gitignore
Tägliche Arbeit
       Business, not as usual
git clone
git init
git status
Local
Working
Directory
git add
Local
Working               Staging
Directory              Area



            git add
git commit
Local
Working               Staging                  Local
Directory              Area                  Repository



            git add


                                git commit
master
git log
git rm
git diff
git branch
master



neuerzweig
git checkout
Local
Working                 Staging                  Local
Directory                Area                  Repository



            git add


                                  git commit




                      git checkout
git merge
Local
Working                 Staging                  Local
Directory                Area                  Repository



            git add


                                  git commit




                      git checkout



                        git merge
master



neuerzweig
git tag
Probleme & Wartung
        Keine Panik auf der Titanic
git commit --amend
git checkout
git reset
git blame
git revert
git mergetool
git bisect
Good   ?   Bad
Good   Good   ?   Bad
Good   Good   ?   Bad   Bad
git gc
Remote
 E.T. nach Hause telefonieren
Lokales Repository
  veröffentlichen
git remote
git fetch
Local                                           Remote
Working                 Staging                  Local               Remote
Directory                Area                  Repository           Repository



            git add


                                  git commit




                                                            git fetch

                      git checkout



                        git merge
git pull
Local                                           Remote
Working                 Staging                  Local               Remote
Directory                Area                  Repository           Repository



            git add


                                  git commit




                                                            git fetch

                      git checkout



                        git merge
git push
Local                                              Remote
Working                 Staging                  Local                  Remote
Directory                Area                  Repository              Repository



            git add


                                  git commit


                                                            git push



                                                               git fetch

                      git checkout



                        git merge
git submodules
Profi-Techiken
       Der Wuxi-Fingergriff von Git
Leere Branches anlegen
History verändern
git svn
git svn rebase
git svn dcommit
git instaweb
git stash
Klicki-Bunti
   Aber gibt’s dat auch für Maus?
Git Gui
Git Extensions
TortoiseGit
GitK
GitX
Und los geht’s …
Bereit Versionsgeschichte
zu schreiben?
Vielen Dank!
Eingesetzte Fotos
Die in dieser Präsentation eingesetzten
Fotos stammen von iStockphoto.



8916384   7941768   3391085   1945196   5823044   2699704




7952299   3142537   7420635   7692057   4144887
Eingesetzte Schriften
Delicious
http://www.josbuivenga.demon.nl/delicious.html

Baskerville (&)
Fragen & Antworten

More Related Content

What's hot

Einführung in Git
Einführung in GitEinführung in Git
Einführung in Gitandreaswo
 
'Git started' für Fortgeschrittene!
'Git started' für Fortgeschrittene!'Git started' für Fortgeschrittene!
'Git started' für Fortgeschrittene!Benjamin Schmid
 
"git.net" gibt's nicht?
"git.net" gibt's nicht?"git.net" gibt's nicht?
"git.net" gibt's nicht?inovex GmbH
 
docker.io - Secure And Portable Containers Made Easy
docker.io - Secure And Portable Containers Made Easydocker.io - Secure And Portable Containers Made Easy
docker.io - Secure And Portable Containers Made Easyinovex GmbH
 
Git class german / english
Git class german / englishGit class german / english
Git class german / englishKevin Read
 
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...inovex GmbH
 
docker.io @ CentOS 7 - Secure And Portable Containers Made Easy
docker.io @ CentOS 7 - Secure And Portable Containers Made Easydocker.io @ CentOS 7 - Secure And Portable Containers Made Easy
docker.io @ CentOS 7 - Secure And Portable Containers Made Easyinovex GmbH
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsQAware GmbH
 
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHDocker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHagilemethoden
 
Vagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenVagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenOPITZ CONSULTING Deutschland
 
Docker - Containervirtualisierung leichtgemacht
Docker - Containervirtualisierung leichtgemachtDocker - Containervirtualisierung leichtgemacht
Docker - Containervirtualisierung leichtgemachtB1 Systems GmbH
 
Docker Einführung @GPN15
Docker Einführung @GPN15Docker Einführung @GPN15
Docker Einführung @GPN15m1no
 
Docker - Automatisches Deployment für Linux-Instanzen
Docker - Automatisches Deployment für Linux-Instanzen Docker - Automatisches Deployment für Linux-Instanzen
Docker - Automatisches Deployment für Linux-Instanzen B1 Systems GmbH
 
Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17remigius-stalder
 
Was gibt es Neues im Docker-Universum
Was gibt es Neues im Docker-UniversumWas gibt es Neues im Docker-Universum
Was gibt es Neues im Docker-UniversumNicholas Dille
 
Geoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GIS
Geoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GISGeoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GIS
Geoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GISPeter Löwe
 

What's hot (20)

Einführung in Git
Einführung in GitEinführung in Git
Einführung in Git
 
'Git started' für Fortgeschrittene!
'Git started' für Fortgeschrittene!'Git started' für Fortgeschrittene!
'Git started' für Fortgeschrittene!
 
"git.net" gibt's nicht?
"git.net" gibt's nicht?"git.net" gibt's nicht?
"git.net" gibt's nicht?
 
docker.io - Secure And Portable Containers Made Easy
docker.io - Secure And Portable Containers Made Easydocker.io - Secure And Portable Containers Made Easy
docker.io - Secure And Portable Containers Made Easy
 
Git class german / english
Git class german / englishGit class german / english
Git class german / english
 
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
 
docker.io @ CentOS 7 - Secure And Portable Containers Made Easy
docker.io @ CentOS 7 - Secure And Portable Containers Made Easydocker.io @ CentOS 7 - Secure And Portable Containers Made Easy
docker.io @ CentOS 7 - Secure And Portable Containers Made Easy
 
Docker Workbench
Docker WorkbenchDocker Workbench
Docker Workbench
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
 
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHDocker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
 
Vagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenVagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und Architekten
 
Docker - Containervirtualisierung leichtgemacht
Docker - Containervirtualisierung leichtgemachtDocker - Containervirtualisierung leichtgemacht
Docker - Containervirtualisierung leichtgemacht
 
Git im team
Git im teamGit im team
Git im team
 
Docker Einführung @GPN15
Docker Einführung @GPN15Docker Einführung @GPN15
Docker Einführung @GPN15
 
Docker - Automatisches Deployment für Linux-Instanzen
Docker - Automatisches Deployment für Linux-Instanzen Docker - Automatisches Deployment für Linux-Instanzen
Docker - Automatisches Deployment für Linux-Instanzen
 
systemd & Docker
systemd & Dockersystemd & Docker
systemd & Docker
 
Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17
 
Was gibt es Neues im Docker-Universum
Was gibt es Neues im Docker-UniversumWas gibt es Neues im Docker-Universum
Was gibt es Neues im Docker-Universum
 
Geoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GIS
Geoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GISGeoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GIS
Geoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GIS
 
Was ist Docker ?
Was ist Docker ?Was ist Docker ?
Was ist Docker ?
 

Similar to Sei (k)ein Blödmann und nimm Git!

Git barcamp stuttgart_2010
Git barcamp stuttgart_2010Git barcamp stuttgart_2010
Git barcamp stuttgart_2010webholics
 
Gitことはじめ
GitことはじめGitことはじめ
Gitことはじめbleis tift
 
Do it the_git_way
Do it the_git_wayDo it the_git_way
Do it the_git_wayPeter Ukena
 
Verteilte Versionskontrolle mit Git
Verteilte Versionskontrolle mit GitVerteilte Versionskontrolle mit Git
Verteilte Versionskontrolle mit GitJan Dittberner
 
Git入門
Git入門Git入門
Git入門yanchi
 
Childthemes mit git – WordPress MeetUp CGN
Childthemes mit git – WordPress MeetUp CGNChildthemes mit git – WordPress MeetUp CGN
Childthemes mit git – WordPress MeetUp CGNpixolin
 
Git und WordPress-Themes | WPCamp Berlin 2013
Git und WordPress-Themes | WPCamp Berlin 2013Git und WordPress-Themes | WPCamp Berlin 2013
Git und WordPress-Themes | WPCamp Berlin 2013KirstenSchelper
 
Eclipse, Git und Gerrit
Eclipse, Git und GerritEclipse, Git und Gerrit
Eclipse, Git und GerritStefan Lay
 

Similar to Sei (k)ein Blödmann und nimm Git! (13)

Git barcamp stuttgart_2010
Git barcamp stuttgart_2010Git barcamp stuttgart_2010
Git barcamp stuttgart_2010
 
Gitことはじめ
GitことはじめGitことはじめ
Gitことはじめ
 
Do it the_git_way
Do it the_git_wayDo it the_git_way
Do it the_git_way
 
git Vorstellung
git Vorstellunggit Vorstellung
git Vorstellung
 
git started – IPC2012
git started – IPC2012git started – IPC2012
git started – IPC2012
 
Git
GitGit
Git
 
Verteilte Versionskontrolle mit Git
Verteilte Versionskontrolle mit GitVerteilte Versionskontrolle mit Git
Verteilte Versionskontrolle mit Git
 
Git入門
Git入門Git入門
Git入門
 
Childthemes mit git – WordPress MeetUp CGN
Childthemes mit git – WordPress MeetUp CGNChildthemes mit git – WordPress MeetUp CGN
Childthemes mit git – WordPress MeetUp CGN
 
Versionskontrolle mit Git
Versionskontrolle mit GitVersionskontrolle mit Git
Versionskontrolle mit Git
 
Git und WordPress-Themes | WPCamp Berlin 2013
Git und WordPress-Themes | WPCamp Berlin 2013Git und WordPress-Themes | WPCamp Berlin 2013
Git und WordPress-Themes | WPCamp Berlin 2013
 
Eclipse, Git und Gerrit
Eclipse, Git und GerritEclipse, Git und Gerrit
Eclipse, Git und Gerrit
 
Git Power-Workshop
Git Power-WorkshopGit Power-Workshop
Git Power-Workshop
 

Sei (k)ein Blödmann und nimm Git!