Minimum introduction to Git

Post on 18-Dec-2014

700 views 2 download

description

A short introduction into Git during Night of Projects 2011 at University of Applied Sciences in Fulda - NSFW!

transcript

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 "user@example.com"

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