git & git-flow - wiki.warpzone.msvortrag_git_git_flow.pdfUberblick 1 git Versionskontrolle...

Preview:

Citation preview

git & git-flow

Jens Sandmann

Warpzone Munster e.V.

14.12.2013

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

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

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

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

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

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

Zentralisierter Workflow

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

Diktator und Lieutenants (Bsp: Linux)

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

Integration Manager (Bsp: Github)

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

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

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

Workflow I

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

Workflow II

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

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

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

git-flow Workflow

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Recommended