1Thursday, March 1, 12
F*** yourself
2Thursday, March 1, 12
F*** yourself
with GIT
3Thursday, March 1, 12
Eigentlich hab ich überhaupt keine Ahnung von dem was ich hier gerade rede. Sei es drum, ich wurde durch die Mitarbeit in einem Open Source Projekt dazu gezwungen, git zu verwenden.
*sigh* Die Welt war doch so schön mit SVN!
Außerdem ist das eine gute Gelegenheit diese ganzen blöden Animationen hier mal auszuprobieren. Die Präsentation steckt voller Copyright violations. Ich bin ein Opfer der Google Bildersuche.
DisclaimerNSFW
4Thursday, March 1, 12
SVN vs. GIT
Versionskontrolle ist was für Hustensaftlutscher!
Scheisse! Ohne google gehts net?!
GIT ist total einfa
5Thursday, March 1, 12
Backups?!
Weichei
6Thursday, March 1, 12
Protokollieren
Archivieren
Wiederherstellen
7Thursday, March 1, 12
ProtokollierenArchivieren
Wiederherstellen
8Thursday, March 1, 12
Klingt gut. Was nehm ich?
9Thursday, March 1, 12
SVN vs. GIT10Thursday, March 1, 12
Subversionzentral
11Thursday, March 1, 12
Gitdezentral
12Thursday, March 1, 12
13Thursday, March 1, 12
SVN
* Wird sehr gut von anderen Tools unterstützt
* Lässt sich “relativ” leicht verstehen
* Ihr könnt zentrales Rechtemanagement betreiben
14Thursday, March 1, 12
SVN
* Langsam
* Historie ist dumm
* Branching ist ziemlich anstrengend
* Ohne Server unbrauchbar
15Thursday, March 1, 12
GIT
* Sau schnell
* Merge ist einfach
* Branch, Branch, Branch ...
* Intelligente Historie
* Geht auch ohne Server
16Thursday, March 1, 12
GIT
* Steiniger Einstieg* Think dif <!-- © violation here! --> Paradigmenwechsel* Linux/Unix simpel, <omg>Windows</omg>
* Rechtemanagement
17Thursday, March 1, 12
Git
18Thursday, March 1, 12
19Thursday, March 1, 12
Begriffe
20Thursday, March 1, 12
* Git verwaltet eine Sammlung von Dateien und deren Änderungen über die Zeit
* All diese Informationen werden in der Datenstruktur Repository gespeichert
21Thursday, March 1, 12
Wie kommt man da hin?
* Ihr braucht git
* Nen bissle Grundkonfiguration
git config --global user.name "FirstName LastName"git config --global user.email "[email protected]"
git config --global color.branch "auto"git config --global color.status "auto"git config --global color.diff "auto"
cd PATH/TO/MY/AWESOME/PROJECTgit init
22Thursday, March 1, 12
* Eine Sammlung von Dateien, die einen Projektstand wiederspiegeln
* Die Referenz auf sein parent commit object!
* SHA1 name, 40 Zeichen identifizieren das commit object. Erzeugter Hash von relevanten Teilen des commits -> identische commits haben den gleichen Namen
23Thursday, March 1, 12
Was bedeutet das?
24Thursday, March 1, 12
DIE git IDEE?!
Versionskontrolle ist die Manipulation des Graphen mit all seinen commits.
Wenn ihr Abfragen oder Änderungen macht,
kann es euch helfen das im Hinterkopf zu
behalten.
25Thursday, March 1, 12
* Ein head ist eine Referenz auf ein commit object
* By default gibts in jedem Repository einen head der master genannt wird
* Ein Repository kann beliebig viele heads haben
* Der aktuell aktive head wird HEAD genannt
26Thursday, March 1, 12
Ok wir haben was zum spielen!
git initgit commitgit loggit statusgit diffgit mv / git rm
27Thursday, March 1, 12
Ok wir haben was zum spielen!
28Thursday, March 1, 12
Ein branch ist eine Referenz auf ein commit object
Beispiel:
29Thursday, March 1, 12
git branchgit branch [new-head-name] [reference-to-(B)]git checkout
30Thursday, March 1, 12
31Thursday, March 1, 12
HINTS
* aus master wird released (main/trunk)
* Branches beinhalten “halbfertiges”
* Branches zum implementieren neuer Features
* Jeder entwickler branched, commits können IMMER gemacht werden, egal ob fertig oder nicht
* Commits sind billig, es gibt KEINEN Grund nicht zu commiten!
32Thursday, March 1, 12
33Thursday, March 1, 12
deletinga branchgit branch -d [head]
34Thursday, March 1, 12
merge patternMerge hat meistens zwei Gründe:
* Features vom branch in den master zum release ziehen
* Bugfixes und features aus dem master in euren feature-branch ziehen um commit Konflikte zu reduzieren und Bugs gefixt zu bekommen
* Nachteil von dem da oben: Eure feature branch hat nen haufen merge commits
* Hier kann rebasing ins Spiel kommen. Hat aber auch keinen Kuchen :)
35Thursday, March 1, 12
36Thursday, March 1, 12
37Thursday, March 1, 12
git reset --hard HEADgit clean -fdxgit format-patch -M -C [head]
commands
38Thursday, March 1, 12
Infos
* SmartGit - Non-Plus-Ultra
* gitk
* Charles Duan, Understanding Git Conceptually
* Versionskontrolle mit Git von Jon Loeliger aus dem Verlag O’Reilly
39Thursday, March 1, 12