Über mich
• René Bruns• Entwickler seit 2001• Seit 2009 bei Travian Games• Seit 2011 Technical Director
Games Development
Donnerstag, 14. Juli 2011
Über Travian Games
• Hauptsitz in München• 2005 gegründet• >200 Mitarbeiter• >100 Mio. Registrierungen• 52 Länderversionen von Travian• Travian, Travianer, Wewaii,
Imperion, goalunited, Ballersunited, Eredan, Miramagia, Remanum, Battlemons
Donnerstag, 14. Juli 2011
Umfrage
Subversion?
CVS?Git?
Mercurial?
Bazaar?
Perforce?
Visual SourceSafe?
Donnerstag, 14. Juli 2011
Umfrage
Subversion?
CVS?Git?
Mercurial?
Bazaar?
Perforce?
Visual SourceSafe?
CuPiDo?
Donnerstag, 14. Juli 2011
Copy und Paste in Datumsordner
Umfrage
Subversion?
CVS?Git?
Mercurial?
Bazaar?
Perforce?
Visual SourceSafe?
Donnerstag, 14. Juli 2011
Historisches
• Entwickelt 2005• Ablöse von Bitkeeper als
Versionsverwaltung des Linux-Kernels• Wird eingesetzt von Git, Samba,
X.org, GNOME, Ruby on Rails, VLC, Wine, Perl 5, phpBB, ...
Donnerstag, 14. Juli 2011
Revisions vs. Hash
4711 4714
Revisions
4712 4713
54ed65f201b42f79d83043e7ac00fee1cb1975c9
Hash
Donnerstag, 14. Juli 2011
Revisions vs. Hash
4711 4714
Revisions
4712 4713
54ed65f201b42f79d83043e7ac00fee1cb1975c9
Hash
f81c259
Donnerstag, 14. Juli 2011
Revisions vs. Hash
4711 4714
Revisions
4712 4713
54ed65f201b42f79d83043e7ac00fee1cb1975c9
Hash
f81c259 dd146ac
Donnerstag, 14. Juli 2011
Revisions vs. Hash
4711 4714
Revisions
4712 4713
54ed65f201b42f79d83043e7ac00fee1cb1975c9
e0a5b1a
Hash
f81c259 dd146ac
Donnerstag, 14. Juli 2011
Zentrales System (bspw. SVN)
Trunk
Branch 1
Branch 2
Server
ClientWorking Copy
Donnerstag, 14. Juli 2011
Dezentrales System
Trunk
Branch 1
Server
Client
Working Copy
Trunk
Branch 1
Branch 2
Donnerstag, 14. Juli 2011
Die vier Ebenen von Git
Working Directory
Staging
Repository
Remote Repository
Donnerstag, 14. Juli 2011
Typischer Workflow
Repository erstellen
$ mkdir gitrepo$ cd gitrepo$ git init
Donnerstag, 14. Juli 2011
Typischer Workflow
Ändern und direkt commiten
$ vi index.php$ git commit -a -m "Nochmal"
1 2
Donnerstag, 14. Juli 2011
Schnelles Branchen und Mergen
Branch erstellen
$ git checkout -b neuerbranch
1 2MasterHead
neuerbranch*
Donnerstag, 14. Juli 2011
Schnelles Branchen und Mergen
Im Branch arbeiten
$ vi index.php
1 2 AMas
ter
neue
rbran
ch*
Hea
d
Donnerstag, 14. Juli 2011
Schnelles Branchen und Mergen
Im Branch arbeiten$ vi index.php$ commit -am "Neues Feature"
1 2 AMas
ter
neue
rbra
nch*
Hea
d
Donnerstag, 14. Juli 2011
Schnelles Branchen und Mergen
Branch wechseln$ git checkout master$ vi index.php$ commit -am "Neues Feature"
1 2 A
3
Mas
ter*
Hea
d
neuerbranch
Donnerstag, 14. Juli 2011
Schnelles Branchen und Mergen
Mergen (True Merge)
$ git merge neuerbranch
1 2 A
3 4
Mas
ter*
Hea
d
neuerbranch
Donnerstag, 14. Juli 2011
Schnelles Branchen und Mergen
Rebase
$ git checkout neuerbranch
1 2 A
3 Master
neuerbranch*
Head
Donnerstag, 14. Juli 2011
Schnelles Branchen und Mergen
Rebase
$ git rebase master
1 2 A‘
3
Master
neue
rbra
nch*
Hea
d
Donnerstag, 14. Juli 2011
Schnelles Branchen und Mergen
Fast-Forward Merge
$ git checkout master$ git merge neuerbranch
1 2 A‘
3
Master*
neue
rbra
nch
Hea
d
Donnerstag, 14. Juli 2011
Coole Tools
OK ? X
Bisect
Good Bad$ git bisect start$ git bisect good 1$ git bisect bad HEAD
Donnerstag, 14. Juli 2011
Coole Tools
OK OK OK OK OK ! X
Bisect
Good BadGood BadGood
$ git bisect good
Donnerstag, 14. Juli 2011
Coole Tools
Weitere Coole Tools
•Commits korrigieren ($ git commit --amend)
Donnerstag, 14. Juli 2011
Coole Tools
Weitere Coole Tools
•Commits korrigieren ($ git commit --amend)•Änderungen zwischenspeichern ($ git stash *)
Donnerstag, 14. Juli 2011
Coole Tools
Weitere Coole Tools
•Commits korrigieren ($ git commit --amend)•Änderungen zwischenspeichern ($ git stash *)•Cherry-Picking ($ git cherry-pick)
Donnerstag, 14. Juli 2011
Coole Tools
Weitere Coole Tools
•Commits korrigieren ($ git commit --amend)•Änderungen zwischenspeichern ($ git stash *)•Cherry-Picking ($ git cherry-pick)•git-svn-bridge ($ git svn *)
Donnerstag, 14. Juli 2011
Coole Tools
Weitere Coole Tools
•Commits korrigieren ($ git commit --amend)•Änderungen zwischenspeichern ($ git stash *)•Cherry-Picking ($ git cherry-pick)•git-svn-bridge ($ git svn *)•Git Gui ($ git gui *)
Donnerstag, 14. Juli 2011
Coole Tools
Weitere Coole Tools
•Commits korrigieren ($ git commit --amend)•Änderungen zwischenspeichern ($ git stash *)•Cherry-Picking ($ git cherry-pick)•git-svn-bridge ($ git svn *)•Git Gui ($ git gui *)•Gitk ($ gitk)
Donnerstag, 14. Juli 2011
Lesezeichen - Links und so
•Git-Homepage: http://git-scm.com/
•Pro Git Book + Free Ebook: http://progit.org/
•github: https://github.com/
•Git-Wikipedia-Artikel: http://de.wikipedia.org/wiki/Git
Donnerstag, 14. Juli 2011
Vielen Dank!
• Feedback? Fragen?• Email: [email protected]• Twitter: @renebruns
Donnerstag, 14. Juli 2011