166
Sei (k)ein Blödmann und nimm Git! Einführung in Versionskontrolle mit Git Stefan Imhoff stefanimhoff.de Django-UserGroup Hamburg 04.08.2009

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

Embed Size (px)

DESCRIPTION

Git-Anfängerpräsentation, auf der Django UserGroup Hamburg vorgetragen.

Citation preview

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

Sei (k)ein

Blödmannund nimm Git!Einführung in Versionskontrolle mit Git

Stefan Imhoffstefanimhoff.deDjango-UserGroup Hamburg04.08.2009

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

Git /gɪt/Nomen (Britisch, Slang)

1. Blödmann, Depp, Idiot

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

»Ich bin ein egoistischer Bastard und benenne alle meine Projekte nach mir selbst. Zuerst Linux, jetzt Git.«

– Linus Torvalds

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

Fakten & StatistikenWarum Git die Mitbewerber abhängt

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

Git Mercurial Bazaar

0,60

0,0590,024

Init (Sekunden)

Quelle: Scott Chacon, whygitisbetterthanx.com

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

Git Mercurial Bazaar

2,3810,368

8,535

Add (Sekunden)

Quelle: Scott Chacon, whygitisbetterthanx.com

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

Git Mercurial Bazaar

14,744

1,9460,451

Status (Sekunden)

Quelle: Scott Chacon, whygitisbetterthanx.com

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

Git Mercurial Bazaar

14,248

2,1890,543

Diff (Sekunden)

Quelle: Scott Chacon, whygitisbetterthanx.com

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

Git Mercurial Bazaar

1,892

1,201

0,056

Tag (Sekunden)

Quelle: Scott Chacon, whygitisbetterthanx.com

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

Git Mercurial Bazaar

9,055

2,650,711

Log (Sekunden)

Quelle: Scott Chacon, whygitisbetterthanx.com

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

Git Mercurial Bazaar

23,002

12,512,48

Commit, groß (Sekunden)

Quelle: Scott Chacon, whygitisbetterthanx.com

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

Git Mercurial Bazaar

1,139

0,5170,086

Commit, klein (Sekunden)

Quelle: Scott Chacon, whygitisbetterthanx.com

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

Git Mercurial Bazaar

82,24994,681

1,161

Branch, kalt (Sekunden)

Quelle: Scott Chacon, whygitisbetterthanx.com

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

Git Mercurial Bazaar

39,411

12,30,07

Branch, heiß (Sekunden)

Quelle: Scott Chacon, whygitisbetterthanx.com

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

Git Mercurial Bazaar Subversion

6164

53

43 45

34

24

Repository (MB)Gesamtes Verzeichnis (MB)

Quelle: Scott Chacon, whygitisbetterthanx.com

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

Git Mercurial Bazaar Subversion

64

311

144119

Clone (Sekunden)

Quelle: Scott Chacon, whygitisbetterthanx.com

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

Theorie & GrundlagenWer das versteht, ist klar im Vorteil …

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

.git

Page 19: Sei (k)ein Blödmann und nimm Git!
Page 20: Sei (k)ein Blödmann und nimm Git!

SHA-I

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

Hallo, Welt!

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

8095a184a9b9ae8a14a0f0cde697c7f7cf1410e6

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

Meta-Informationen(Datum, Name, Ort)

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

Warum?• Konsistente Inhalte• Gleicher Inhalt = gleicher Blob

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

Objekte

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

• blobs• trees• commits• tags

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

Blobs

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

Dateiinhalte

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

Trees

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

• blobs• trees

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

Commits

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

• tree• parent• author• commiter• message• datetime

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

Tags

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

• object• type• tagger• message

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

KonfigurationSag mir wie du heißt, Baby!

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

git config

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

git config --global user.name "Stefan Imhoff"git config --global user.email "[email protected]"

Page 38: Sei (k)ein Blödmann und nimm Git!
Page 39: Sei (k)ein Blödmann und nimm Git!

.gitignore

Page 40: Sei (k)ein Blödmann und nimm Git!
Page 41: Sei (k)ein Blödmann und nimm Git!

Tägliche ArbeitBusiness, not as usual

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

git clone

Page 43: Sei (k)ein Blödmann und nimm Git!
Page 44: Sei (k)ein Blödmann und nimm Git!

git init

Page 45: Sei (k)ein Blödmann und nimm Git!
Page 46: Sei (k)ein Blödmann und nimm Git!

git status

Page 47: Sei (k)ein Blödmann und nimm Git!
Page 48: Sei (k)ein Blödmann und nimm Git!

Working Directory

Local

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

git add

Page 50: Sei (k)ein Blödmann und nimm Git!
Page 51: Sei (k)ein Blödmann und nimm Git!

Working Directory

StagingArea

git add

Local

Page 52: Sei (k)ein Blödmann und nimm Git!
Page 53: Sei (k)ein Blödmann und nimm Git!

git commit

Page 54: Sei (k)ein Blödmann und nimm Git!
Page 55: Sei (k)ein Blödmann und nimm Git!

Working Directory

StagingArea

LocalRepository

git add

git commit

Local

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

master

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

git log

Page 58: Sei (k)ein Blödmann und nimm Git!
Page 59: Sei (k)ein Blödmann und nimm Git!
Page 60: Sei (k)ein Blödmann und nimm Git!

git rm

Page 61: Sei (k)ein Blödmann und nimm Git!
Page 62: Sei (k)ein Blödmann und nimm Git!
Page 63: Sei (k)ein Blödmann und nimm Git!

git diff

Page 64: Sei (k)ein Blödmann und nimm Git!
Page 65: Sei (k)ein Blödmann und nimm Git!

git branch

Page 66: Sei (k)ein Blödmann und nimm Git!
Page 67: Sei (k)ein Blödmann und nimm Git!
Page 68: Sei (k)ein Blödmann und nimm Git!
Page 69: Sei (k)ein Blödmann und nimm Git!

master

neuerzweig

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

git checkout

Page 71: Sei (k)ein Blödmann und nimm Git!
Page 72: Sei (k)ein Blödmann und nimm Git!
Page 73: Sei (k)ein Blödmann und nimm Git!
Page 74: Sei (k)ein Blödmann und nimm Git!

Working Directory

StagingArea

LocalRepository

git add

git commit

git checkout

Local

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

git merge

Page 76: Sei (k)ein Blödmann und nimm Git!
Page 77: Sei (k)ein Blödmann und nimm Git!

Working Directory

StagingArea

LocalRepository

git add

git commit

git checkout

git merge

Local

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

master

neuerzweig

Page 79: Sei (k)ein Blödmann und nimm Git!
Page 80: Sei (k)ein Blödmann und nimm Git!

git tag

Page 81: Sei (k)ein Blödmann und nimm Git!
Page 82: Sei (k)ein Blödmann und nimm Git!

Probleme & WartungKeine Panik auf der Titanic

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

git commit --amend

Page 84: Sei (k)ein Blödmann und nimm Git!
Page 85: Sei (k)ein Blödmann und nimm Git!
Page 86: Sei (k)ein Blödmann und nimm Git!

git checkout

Page 87: Sei (k)ein Blödmann und nimm Git!
Page 88: Sei (k)ein Blödmann und nimm Git!

git reset

Page 89: Sei (k)ein Blödmann und nimm Git!
Page 90: Sei (k)ein Blödmann und nimm Git!

git blame

Page 91: Sei (k)ein Blödmann und nimm Git!
Page 92: Sei (k)ein Blödmann und nimm Git!

git revert

Page 93: Sei (k)ein Blödmann und nimm Git!
Page 94: Sei (k)ein Blödmann und nimm Git!

git mergetool

Page 95: Sei (k)ein Blödmann und nimm Git!
Page 96: Sei (k)ein Blödmann und nimm Git!
Page 97: Sei (k)ein Blödmann und nimm Git!

git bisect

Page 98: Sei (k)ein Blödmann und nimm Git!
Page 99: Sei (k)ein Blödmann und nimm Git!

BadGood ?

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

BadGood Good ?

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

BadGood Good Bad?

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

git gc

Page 103: Sei (k)ein Blödmann und nimm Git!
Page 104: Sei (k)ein Blödmann und nimm Git!

RemoteE.T. nach Hause telefonieren

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

Lokales Repository veröffentlichen

Page 106: Sei (k)ein Blödmann und nimm Git!
Page 107: Sei (k)ein Blödmann und nimm Git!
Page 108: Sei (k)ein Blödmann und nimm Git!
Page 109: Sei (k)ein Blödmann und nimm Git!
Page 110: Sei (k)ein Blödmann und nimm Git!

git remote

Page 111: Sei (k)ein Blödmann und nimm Git!
Page 112: Sei (k)ein Blödmann und nimm Git!
Page 113: Sei (k)ein Blödmann und nimm Git!

git fetch

Page 114: Sei (k)ein Blödmann und nimm Git!
Page 115: Sei (k)ein Blödmann und nimm Git!
Page 116: Sei (k)ein Blödmann und nimm Git!

Working Directory

StagingArea

LocalRepository

Remote Repository

git add

git commit

git fetch

git checkout

git merge

Local Remote

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

git pull

Page 118: Sei (k)ein Blödmann und nimm Git!
Page 119: Sei (k)ein Blödmann und nimm Git!

Working Directory

StagingArea

LocalRepository

Remote Repository

git add

git commit

git fetch

git checkout

git merge

Local Remote

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

git push

Page 121: Sei (k)ein Blödmann und nimm Git!
Page 122: Sei (k)ein Blödmann und nimm Git!

Working Directory

StagingArea

LocalRepository

Remote Repository

git add

git commit

git push

git checkout

git merge

Local Remote

git fetch

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

git submodules

Page 124: Sei (k)ein Blödmann und nimm Git!
Page 125: Sei (k)ein Blödmann und nimm Git!
Page 126: Sei (k)ein Blödmann und nimm Git!
Page 127: Sei (k)ein Blödmann und nimm Git!

Profi-TechikenDer Wuxi-Fingergriff von Git

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

Leere Branches anlegen

Page 129: Sei (k)ein Blödmann und nimm Git!
Page 130: Sei (k)ein Blödmann und nimm Git!

History verändern

Page 131: Sei (k)ein Blödmann und nimm Git!
Page 132: Sei (k)ein Blödmann und nimm Git!

git svn

Page 133: Sei (k)ein Blödmann und nimm Git!
Page 134: Sei (k)ein Blödmann und nimm Git!

git svn rebasegit svn dcommit

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

git instaweb

Page 136: Sei (k)ein Blödmann und nimm Git!
Page 137: Sei (k)ein Blödmann und nimm Git!
Page 138: Sei (k)ein Blödmann und nimm Git!

git stash

Page 139: Sei (k)ein Blödmann und nimm Git!
Page 140: Sei (k)ein Blödmann und nimm Git!
Page 141: Sei (k)ein Blödmann und nimm Git!
Page 142: Sei (k)ein Blödmann und nimm Git!

Klicki-BuntiAber gibt’s dat auch für Maus?

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

Git Gui

Page 144: Sei (k)ein Blödmann und nimm Git!
Page 145: Sei (k)ein Blödmann und nimm Git!
Page 146: Sei (k)ein Blödmann und nimm Git!
Page 147: Sei (k)ein Blödmann und nimm Git!

Git Extensions

Page 148: Sei (k)ein Blödmann und nimm Git!
Page 149: Sei (k)ein Blödmann und nimm Git!
Page 150: Sei (k)ein Blödmann und nimm Git!

TortoiseGit

Page 151: Sei (k)ein Blödmann und nimm Git!
Page 152: Sei (k)ein Blödmann und nimm Git!
Page 153: Sei (k)ein Blödmann und nimm Git!
Page 154: Sei (k)ein Blödmann und nimm Git!
Page 155: Sei (k)ein Blödmann und nimm Git!
Page 156: Sei (k)ein Blödmann und nimm Git!
Page 157: Sei (k)ein Blödmann und nimm Git!

GitK

Page 158: Sei (k)ein Blödmann und nimm Git!
Page 159: Sei (k)ein Blödmann und nimm Git!

GitX

Page 160: Sei (k)ein Blödmann und nimm Git!
Page 161: Sei (k)ein Blödmann und nimm Git!
Page 162: Sei (k)ein Blödmann und nimm Git!

Und los geht’s …Bereit Versionsgeschichtezu schreiben?

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

Vielen Dank!

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

Eingesetzte FotosDie in dieser Präsentation eingesetztenFotos stammen von iStockphoto.

8916384 7941768 3391085 1945196 5823044 2699704

7952299 3142537 7420635 7692057 4144887

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

Eingesetzte SchriftenDelicious http://www.josbuivenga.demon.nl/delicious.html

Baskerville (&)

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

Fragen & Antworten