SlideShare una empresa de Scribd logo
1 de 166
Descargar para leer sin conexión
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
Sei (k)ein Blödmann und nimm 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"
Sei (k)ein Blödmann und nimm Git!
.gitignore
Sei (k)ein Blödmann und nimm Git!
Tägliche Arbeit
       Business, not as usual
git clone
Sei (k)ein Blödmann und nimm Git!
git init
Sei (k)ein Blödmann und nimm Git!
git status
Sei (k)ein Blödmann und nimm Git!
Local
Working
Directory
git add
Sei (k)ein Blödmann und nimm Git!
Local
Working               Staging
Directory              Area



            git add
Sei (k)ein Blödmann und nimm Git!
git commit
Sei (k)ein Blödmann und nimm Git!
Local
Working               Staging                  Local
Directory              Area                  Repository



            git add


                                git commit
master
git log
Sei (k)ein Blödmann und nimm Git!
Sei (k)ein Blödmann und nimm Git!
git rm
Sei (k)ein Blödmann und nimm Git!
Sei (k)ein Blödmann und nimm Git!
git diff
Sei (k)ein Blödmann und nimm Git!
git branch
Sei (k)ein Blödmann und nimm Git!
Sei (k)ein Blödmann und nimm Git!
Sei (k)ein Blödmann und nimm Git!
master



neuerzweig
git checkout
Sei (k)ein Blödmann und nimm Git!
Sei (k)ein Blödmann und nimm Git!
Sei (k)ein Blödmann und nimm Git!
Local
Working                 Staging                  Local
Directory                Area                  Repository



            git add


                                  git commit




                      git checkout
git merge
Sei (k)ein Blödmann und nimm Git!
Local
Working                 Staging                  Local
Directory                Area                  Repository



            git add


                                  git commit




                      git checkout



                        git merge
master



neuerzweig
Sei (k)ein Blödmann und nimm Git!
git tag
Sei (k)ein Blödmann und nimm Git!
Probleme & Wartung
        Keine Panik auf der Titanic
git commit --amend
Sei (k)ein Blödmann und nimm Git!
Sei (k)ein Blödmann und nimm Git!
git checkout
Sei (k)ein Blödmann und nimm Git!
git reset
Sei (k)ein Blödmann und nimm Git!
git blame
Sei (k)ein Blödmann und nimm Git!
git revert
Sei (k)ein Blödmann und nimm Git!
git mergetool
Sei (k)ein Blödmann und nimm Git!
Sei (k)ein Blödmann und nimm Git!
git bisect
Sei (k)ein Blödmann und nimm Git!
Good   ?   Bad
Good   Good   ?   Bad
Good   Good   ?   Bad   Bad
git gc
Sei (k)ein Blödmann und nimm Git!
Remote
 E.T. nach Hause telefonieren
Lokales Repository
  veröffentlichen
Sei (k)ein Blödmann und nimm Git!
Sei (k)ein Blödmann und nimm Git!
Sei (k)ein Blödmann und nimm Git!
Sei (k)ein Blödmann und nimm Git!
git remote
Sei (k)ein Blödmann und nimm Git!
Sei (k)ein Blödmann und nimm Git!
git fetch
Sei (k)ein Blödmann und nimm Git!
Sei (k)ein Blödmann und nimm Git!
Local                                           Remote
Working                 Staging                  Local               Remote
Directory                Area                  Repository           Repository



            git add


                                  git commit




                                                            git fetch

                      git checkout



                        git merge
git pull
Sei (k)ein Blödmann und nimm Git!
Local                                           Remote
Working                 Staging                  Local               Remote
Directory                Area                  Repository           Repository



            git add


                                  git commit




                                                            git fetch

                      git checkout



                        git merge
git push
Sei (k)ein Blödmann und nimm Git!
Local                                              Remote
Working                 Staging                  Local                  Remote
Directory                Area                  Repository              Repository



            git add


                                  git commit


                                                            git push



                                                               git fetch

                      git checkout



                        git merge
git submodules
Sei (k)ein Blödmann und nimm Git!
Sei (k)ein Blödmann und nimm Git!
Sei (k)ein Blödmann und nimm Git!
Profi-Techiken
       Der Wuxi-Fingergriff von Git
Leere Branches anlegen
Sei (k)ein Blödmann und nimm Git!
History verändern
Sei (k)ein Blödmann und nimm Git!
git svn
Sei (k)ein Blödmann und nimm Git!
git svn rebase
git svn dcommit
git instaweb
Sei (k)ein Blödmann und nimm Git!
Sei (k)ein Blödmann und nimm Git!
git stash
Sei (k)ein Blödmann und nimm Git!
Sei (k)ein Blödmann und nimm Git!
Sei (k)ein Blödmann und nimm Git!
Klicki-Bunti
   Aber gibt’s dat auch für Maus?
Git Gui
Sei (k)ein Blödmann und nimm Git!
Sei (k)ein Blödmann und nimm Git!
Sei (k)ein Blödmann und nimm Git!
Git Extensions
Sei (k)ein Blödmann und nimm Git!
Sei (k)ein Blödmann und nimm Git!
TortoiseGit
Sei (k)ein Blödmann und nimm Git!
Sei (k)ein Blödmann und nimm Git!
Sei (k)ein Blödmann und nimm Git!
Sei (k)ein Blödmann und nimm Git!
Sei (k)ein Blödmann und nimm Git!
Sei (k)ein Blödmann und nimm Git!
GitK
Sei (k)ein Blödmann und nimm Git!
GitX
Sei (k)ein Blödmann und nimm Git!
Sei (k)ein Blödmann und nimm Git!
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

Más contenido relacionado

La actualidad más candente

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
 

La actualidad más candente (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 a 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 a 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!