32
git & git-flow Jens Sandmann Warpzone M¨ unster e.V. 14.12.2013 Jens Sandmann (WZ) git & git-flow 14.12.2013 1 / 31

git & git-flow - wiki.warpzone.msvortrag_git_git_flow.pdfUberblick 1 git Versionskontrolle Allgemein VCS mit git 2 git ow 3 git nutzen 4 Anhang Jens Sandmann (WZ) git & git-ow 14.12.2013

  • Upload
    others

  • View
    81

  • Download
    1

Embed Size (px)

Citation preview

Page 1: git & git-flow - wiki.warpzone.msvortrag_git_git_flow.pdfUberblick 1 git Versionskontrolle Allgemein VCS mit git 2 git ow 3 git nutzen 4 Anhang Jens Sandmann (WZ) git & git-ow 14.12.2013

git & git-flow

Jens Sandmann

Warpzone Munster e.V.

14.12.2013

Jens Sandmann (WZ) git & git-flow 14.12.2013 1 / 31

Page 2: git & git-flow - wiki.warpzone.msvortrag_git_git_flow.pdfUberblick 1 git Versionskontrolle Allgemein VCS mit git 2 git ow 3 git nutzen 4 Anhang Jens Sandmann (WZ) git & git-ow 14.12.2013

Uberblick

1 gitVersionskontrolle AllgemeinVCS mit git

2 git flow

3 git nutzen

4 Anhang

Jens Sandmann (WZ) git & git-flow 14.12.2013 2 / 31

Page 3: git & git-flow - wiki.warpzone.msvortrag_git_git_flow.pdfUberblick 1 git Versionskontrolle Allgemein VCS mit git 2 git ow 3 git nutzen 4 Anhang Jens Sandmann (WZ) git & git-ow 14.12.2013

Was ist ein Version Controll System(VCS)?

Hauptaufgaben

Protokollieren von Anderungen

Nachvollziehen Wer Wann Was geandert hat

Gemeinsamer Zugriff auf dieselben Dateien

Wiederherstellen von alteren Versionen einer Datei

Jens Sandmann (WZ) git & git-flow 14.12.2013 3 / 31

Page 4: git & git-flow - wiki.warpzone.msvortrag_git_git_flow.pdfUberblick 1 git Versionskontrolle Allgemein VCS mit git 2 git ow 3 git nutzen 4 Anhang Jens Sandmann (WZ) git & git-ow 14.12.2013

Formen von Versionsverwaltung

Lokale Versionsverwaltung

Es wird nur lokal versioniert. Beispiel: RCS(1982)

Zentrale VersionsverwaltungEs gibt ein Zentrales Repository the Truth mit dem alle Arbeiten.Erlauben das mehrere Leute gleichzeitig an einem Projekt Arbeiten.Beispiele: CVS(1990), Subversion(2000)

Jens Sandmann (WZ) git & git-flow 14.12.2013 4 / 31

Page 5: git & git-flow - wiki.warpzone.msvortrag_git_git_flow.pdfUberblick 1 git Versionskontrolle Allgemein VCS mit git 2 git ow 3 git nutzen 4 Anhang Jens Sandmann (WZ) git & git-ow 14.12.2013

Verteilte Versionsverwaltung

Verteile VersionsverwaltungJeder Nutzer hat Lokal eine vollstandige Kopie des gesamtenRepositorys. Es kann Zentrale Server geben muss aber nicht.Beispiele: git, mercury

Jens Sandmann (WZ) git & git-flow 14.12.2013 5 / 31

Page 6: git & git-flow - wiki.warpzone.msvortrag_git_git_flow.pdfUberblick 1 git Versionskontrolle Allgemein VCS mit git 2 git ow 3 git nutzen 4 Anhang Jens Sandmann (WZ) git & git-ow 14.12.2013

Eigenschaften von git

Ziele von TorvaldsGit wurde Ursprunglich von Linus Torvalds entwickelt, dabei wollte eretwas das besonders folgende Anforderungen erfullt:

Unterstutzung verteilter Arbeitsablaufe

Hohe Sicherheit gegen unbeabsichtigte/boswillige Verfalschung

Hohe Effizienz

Jens Sandmann (WZ) git & git-flow 14.12.2013 6 / 31

Page 7: git & git-flow - wiki.warpzone.msvortrag_git_git_flow.pdfUberblick 1 git Versionskontrolle Allgemein VCS mit git 2 git ow 3 git nutzen 4 Anhang Jens Sandmann (WZ) git & git-ow 14.12.2013

Zentralisierter Workflow

Jens Sandmann (WZ) git & git-flow 14.12.2013 7 / 31

Page 8: git & git-flow - wiki.warpzone.msvortrag_git_git_flow.pdfUberblick 1 git Versionskontrolle Allgemein VCS mit git 2 git ow 3 git nutzen 4 Anhang Jens Sandmann (WZ) git & git-ow 14.12.2013

Diktator und Lieutenants (Bsp: Linux)

Jens Sandmann (WZ) git & git-flow 14.12.2013 8 / 31

Page 9: git & git-flow - wiki.warpzone.msvortrag_git_git_flow.pdfUberblick 1 git Versionskontrolle Allgemein VCS mit git 2 git ow 3 git nutzen 4 Anhang Jens Sandmann (WZ) git & git-ow 14.12.2013

Integration Manager (Bsp: Github)

Jens Sandmann (WZ) git & git-flow 14.12.2013 9 / 31

Page 10: git & git-flow - wiki.warpzone.msvortrag_git_git_flow.pdfUberblick 1 git Versionskontrolle Allgemein VCS mit git 2 git ow 3 git nutzen 4 Anhang Jens Sandmann (WZ) git & git-ow 14.12.2013

Verwendete Begriffe I

Glossar

commit - Ein bestimmter Anderung bzw Stand vonDateien(auch Revision)

branch - Ein ”Zweig”, eine Verzweigung von einemUrsprunglichem gleich Stand

merge - das Zusammenfugen(eng: mergen) vonUnterschiedlichen Dateien/Branches/..

Repository - eng: Lager, Depot, Quelle auf deutsch auchProjektarchiv genannt. Der Ort in dem die Verwalteten Datenliegen

Jens Sandmann (WZ) git & git-flow 14.12.2013 10 / 31

Page 11: git & git-flow - wiki.warpzone.msvortrag_git_git_flow.pdfUberblick 1 git Versionskontrolle Allgemein VCS mit git 2 git ow 3 git nutzen 4 Anhang Jens Sandmann (WZ) git & git-ow 14.12.2013

Verwendete Begriffe II

Glosarcheckout - Zu einen bestimmten branch oder einen bestimmtenstand eines branches wechseln

working directory - Das Arbeitsverzeichnis, hier werdenAnderungen vorgenommen.

stage area - Dateien die fur einen commit vorgesehen sindlanden in der staging area

Jens Sandmann (WZ) git & git-flow 14.12.2013 11 / 31

Page 12: git & git-flow - wiki.warpzone.msvortrag_git_git_flow.pdfUberblick 1 git Versionskontrolle Allgemein VCS mit git 2 git ow 3 git nutzen 4 Anhang Jens Sandmann (WZ) git & git-ow 14.12.2013

Workflow I

Jens Sandmann (WZ) git & git-flow 14.12.2013 12 / 31

Page 13: git & git-flow - wiki.warpzone.msvortrag_git_git_flow.pdfUberblick 1 git Versionskontrolle Allgemein VCS mit git 2 git ow 3 git nutzen 4 Anhang Jens Sandmann (WZ) git & git-ow 14.12.2013

Workflow II

Jens Sandmann (WZ) git & git-flow 14.12.2013 13 / 31

Page 14: git & git-flow - wiki.warpzone.msvortrag_git_git_flow.pdfUberblick 1 git Versionskontrolle Allgemein VCS mit git 2 git ow 3 git nutzen 4 Anhang Jens Sandmann (WZ) git & git-ow 14.12.2013

git flow

1 gitVersionskontrolle AllgemeinVCS mit git

2 git flow

3 git nutzen

4 Anhang

Jens Sandmann (WZ) git & git-flow 14.12.2013 14 / 31

Page 15: git & git-flow - wiki.warpzone.msvortrag_git_git_flow.pdfUberblick 1 git Versionskontrolle Allgemein VCS mit git 2 git ow 3 git nutzen 4 Anhang Jens Sandmann (WZ) git & git-ow 14.12.2013

A successful Git branching model

Die Idee von Vincent DriessenEs gibt ein zentrales Repository

Es gibt zwei Hauptbranches: Main und Develop

Es gibt verschiedene Unterstutzende Branches

Jens Sandmann (WZ) git & git-flow 14.12.2013 15 / 31

Page 16: git & git-flow - wiki.warpzone.msvortrag_git_git_flow.pdfUberblick 1 git Versionskontrolle Allgemein VCS mit git 2 git ow 3 git nutzen 4 Anhang Jens Sandmann (WZ) git & git-ow 14.12.2013

git-flow Workflow

Jens Sandmann (WZ) git & git-flow 14.12.2013 16 / 31

Page 17: git & git-flow - wiki.warpzone.msvortrag_git_git_flow.pdfUberblick 1 git Versionskontrolle Allgemein VCS mit git 2 git ow 3 git nutzen 4 Anhang Jens Sandmann (WZ) git & git-ow 14.12.2013

Hauptbranches

Main BranchDer Hauptzweig. Jede Version des Main Branches ist immerLauffahig und mit Tag versehen so das man gut eine BestimmteVersion auschecken kann.

Develop BranchDer Hauptentwicklungszweig. Auf diesem findet die Entwicklungstatt, es wird aber nicht direkt auf Develop gearbeitet sondern mannutzt dafur die Unterstutzendes Branches. Develop sollteFunktionstuchtig sein kann aber noch Bugs enthalten. Von diesemBranch aus wurden Nightly Build erstellt.

Jens Sandmann (WZ) git & git-flow 14.12.2013 17 / 31

Page 18: git & git-flow - wiki.warpzone.msvortrag_git_git_flow.pdfUberblick 1 git Versionskontrolle Allgemein VCS mit git 2 git ow 3 git nutzen 4 Anhang Jens Sandmann (WZ) git & git-ow 14.12.2013

Unterstutzende Branches

Feature BranchDie Feature Branches gehen vom Develop aus. Es wird immer genauein Feature Entwickelt und nach Abschluss wieder in Developgemerged. Ein Feature Branch lebt nur so lange wie bis das Featurefertig gestellt wurde, danach wird er geloscht.

Jens Sandmann (WZ) git & git-flow 14.12.2013 18 / 31

Page 19: git & git-flow - wiki.warpzone.msvortrag_git_git_flow.pdfUberblick 1 git Versionskontrolle Allgemein VCS mit git 2 git ow 3 git nutzen 4 Anhang Jens Sandmann (WZ) git & git-ow 14.12.2013

Unterstutzendes Branches

Release BranchEin Feature branch geht auch von Develop aus, und wird am Endewieder in Develop und Main gemerged. Das Ziel ist ein neuesRelease. Es muss sichergestellt sein das alle angestrebten Features furdas neue Release in Develop sind, Features fur die neue Version abernoch nicht eingepflegt wurden.

Jens Sandmann (WZ) git & git-flow 14.12.2013 19 / 31

Page 20: git & git-flow - wiki.warpzone.msvortrag_git_git_flow.pdfUberblick 1 git Versionskontrolle Allgemein VCS mit git 2 git ow 3 git nutzen 4 Anhang Jens Sandmann (WZ) git & git-ow 14.12.2013

Unterstutzendes Branches

Hotfix BranchHotfix Branches sind die einzigen die von Master ausgehen. Sie sinderforderlich wenn im Main Branch ein Fehler gefunden wurde. Eswird immer nur der Spezielle Bug gefixt. Anderungen aus HotfixBranches landen sowohl in Main als auch in Develop, damit es keineRegressionen gibt.

Jens Sandmann (WZ) git & git-flow 14.12.2013 20 / 31

Page 21: git & git-flow - wiki.warpzone.msvortrag_git_git_flow.pdfUberblick 1 git Versionskontrolle Allgemein VCS mit git 2 git ow 3 git nutzen 4 Anhang Jens Sandmann (WZ) git & git-ow 14.12.2013

Zusammenfassung

ZusammenfassungDie Hauptbranches leben standig.

Die Unterstutzenden Branches leben nur so lange bis sieabgeschlossen sind.

Merges werden mit der –no-ff Option vorgenommen so dasersichtlich ist welche Commits aus einem Feature Branchstammen, und es spater nicht als ein linearer Strang erscheint.

Jens Sandmann (WZ) git & git-flow 14.12.2013 21 / 31

Page 22: git & git-flow - wiki.warpzone.msvortrag_git_git_flow.pdfUberblick 1 git Versionskontrolle Allgemein VCS mit git 2 git ow 3 git nutzen 4 Anhang Jens Sandmann (WZ) git & git-ow 14.12.2013

git nutzen

1 gitVersionskontrolle AllgemeinVCS mit git

2 git flow

3 git nutzen

4 Anhang

Jens Sandmann (WZ) git & git-flow 14.12.2013 22 / 31

Page 23: git & git-flow - wiki.warpzone.msvortrag_git_git_flow.pdfUberblick 1 git Versionskontrolle Allgemein VCS mit git 2 git ow 3 git nutzen 4 Anhang Jens Sandmann (WZ) git & git-ow 14.12.2013

Git einrichten

Grundlegende EinstellungenAlle Befehle von git starten mit dem git Befehl. Die eigene Identitat

g i t c o n f i g u s e r . name ” Je ns Sandmann”g i t c o n f i g u s e r . e m a i l jens@member . warpzone . ms

Mit dem Parameter –global als Standardeinstellungen fur den User,ansonsten gilt das pro Repository

Jens Sandmann (WZ) git & git-flow 14.12.2013 23 / 31

Page 24: git & git-flow - wiki.warpzone.msvortrag_git_git_flow.pdfUberblick 1 git Versionskontrolle Allgemein VCS mit git 2 git ow 3 git nutzen 4 Anhang Jens Sandmann (WZ) git & git-ow 14.12.2013

Ein Repository anlegen

InitDie einfachste Moglichkeit ein git repository zu erstellen ist einfachauf der Kommandozeile folgendes einzugeben

g i t i n i t

Dadurch wird das aktuelle Verzeichnis zu einem git leeren(!) gitRepository mit dem man Arbeiten kann.

Jens Sandmann (WZ) git & git-flow 14.12.2013 24 / 31

Page 25: git & git-flow - wiki.warpzone.msvortrag_git_git_flow.pdfUberblick 1 git Versionskontrolle Allgemein VCS mit git 2 git ow 3 git nutzen 4 Anhang Jens Sandmann (WZ) git & git-ow 14.12.2013

Ein bestehendes Repository clonen

CloneAlternativ kann man ein schon bestehendes git Repository z.b. vongit-hub oder unserem git clonen

g i t c l o n e g i t @ wa rp zo n e . ms : g i t−workshop . g i t

Dabei wird Unterhalb des Bestehendes Verzeichnisses ein neuesVerzeichnis mit den Namen des git Repositorys angelegt in dem sichdie Dateien befinden.

Jens Sandmann (WZ) git & git-flow 14.12.2013 25 / 31

Page 26: git & git-flow - wiki.warpzone.msvortrag_git_git_flow.pdfUberblick 1 git Versionskontrolle Allgemein VCS mit git 2 git ow 3 git nutzen 4 Anhang Jens Sandmann (WZ) git & git-ow 14.12.2013

Stand eines Verzeichnisses

Aktueller StatusDen Aktuellen Status eines git Verzeichnisses lasst man sich per

g i t s t a t u s

ausgeben

Geschichte eines VerzeichnissesDie Geschichte eines Verzeichnisses lasst sich per log anzeigen

g i t l o g

Uber den -p Parameter kann man sich die Anderungen im Quelltextanzeigen lassen.

Jens Sandmann (WZ) git & git-flow 14.12.2013 26 / 31

Page 27: git & git-flow - wiki.warpzone.msvortrag_git_git_flow.pdfUberblick 1 git Versionskontrolle Allgemein VCS mit git 2 git ow 3 git nutzen 4 Anhang Jens Sandmann (WZ) git & git-ow 14.12.2013

Anderungen nachvollziehen

Anzeigen von AnderungenWelche Dateien in der Working Area verandert wurden zeigt uns gitstatus an, aber erst per git diff sehen wir welche Anderungen genauan den einzelnen Dateien vorgenommen wurden. Das gleichefunktioniert auch fur die Dateien in der Staging Area per –cacheParameter

g i t d i f fg i t d i f f −−cached

Jens Sandmann (WZ) git & git-flow 14.12.2013 27 / 31

Page 28: git & git-flow - wiki.warpzone.msvortrag_git_git_flow.pdfUberblick 1 git Versionskontrolle Allgemein VCS mit git 2 git ow 3 git nutzen 4 Anhang Jens Sandmann (WZ) git & git-ow 14.12.2013

Einen Commit erstellen

Dateien zu einem Commit hinzufugenDateien mussen erst in die Staging Area hinzugefugt werden damitsie Teil des Commits werden.

g i t add t e s t 1 . t x tg i t add ∗ . t x tg i t add img /

Jens Sandmann (WZ) git & git-flow 14.12.2013 28 / 31

Page 29: git & git-flow - wiki.warpzone.msvortrag_git_git_flow.pdfUberblick 1 git Versionskontrolle Allgemein VCS mit git 2 git ow 3 git nutzen 4 Anhang Jens Sandmann (WZ) git & git-ow 14.12.2013

Einen Commit erzeugen

Commiten

Das eigentliche Commiten erzeugt aus allen Dateien&Anderungen diegestaged sind einen Commit. Am besten lasst man sich diese vorhernochmal anzeigen.

g i t s t a t u sg i t commit

Anschließend die Commit Message im Editor eingeben. Alternativ:

g i t commit −m ”Commit Message ”

Jens Sandmann (WZ) git & git-flow 14.12.2013 29 / 31

Page 30: git & git-flow - wiki.warpzone.msvortrag_git_git_flow.pdfUberblick 1 git Versionskontrolle Allgemein VCS mit git 2 git ow 3 git nutzen 4 Anhang Jens Sandmann (WZ) git & git-ow 14.12.2013

Arbeiten mit Entfernten Repositorys

Anderungen erhaltenWenn man mit entfernten, sogenannten Remotes, arbeitet, kann undwill man normalerweise seine Anderungen zuruck an diese senden undAnderungen von anderen auf dem Remote auch erhalten.

g i t f e t c h <remote branch> < l o k a l e r branch>g i t mergeg i t p u l l <remote branch> < l o k a l e r branch>

Bei fetch und merge hat man mehr Kontrolle. Bei pull macht git alleArbeit, solange es keine merge Konflikte gibt.

Jens Sandmann (WZ) git & git-flow 14.12.2013 30 / 31

Page 31: git & git-flow - wiki.warpzone.msvortrag_git_git_flow.pdfUberblick 1 git Versionskontrolle Allgemein VCS mit git 2 git ow 3 git nutzen 4 Anhang Jens Sandmann (WZ) git & git-ow 14.12.2013

Branches

Branches erzeugen und anzeigenEin Branch wird immer von dem Branch aus erzeugt auf dem mansich gerade befindet. Wenn man also verschiedene Branches hatsollte man sicherstellen das man vom richtigen aus branched.

g i t branch <name des neuen branches>g i t branch −a # z e i g t a l l e b r a n c h e s ang i t c h e c k o u t −b <name des neuen branches>g i t c h e c k o u t <name des b e s t e h e n d e s branches>

Jens Sandmann (WZ) git & git-flow 14.12.2013 31 / 31

Page 32: git & git-flow - wiki.warpzone.msvortrag_git_git_flow.pdfUberblick 1 git Versionskontrolle Allgemein VCS mit git 2 git ow 3 git nutzen 4 Anhang Jens Sandmann (WZ) git & git-ow 14.12.2013

Quellen

http://www.git-scm.com/book/en/ Die Quelle fur alle Fragenum git

Git in der deutschen Wikipeida

A successful Git branching model

git-flow cheatsheet

Jens Sandmann (WZ) git & git-flow 14.12.2013 32 / 31