Arbeiten mit dem Versionsverwaltungssystem · Jannik Kramer Arbeiten mit Git Hamburg, 12. Juni 2014...

36
Agentur für cooperation & communication Hamburg, 12. Juni 2014 Arbeiten mit dem Versionsverwaltungssystem Jannik Kramer Proseminar Werkzeuge für das wissenschaftliche Arbeiten 14.07.2014

Transcript of Arbeiten mit dem Versionsverwaltungssystem · Jannik Kramer Arbeiten mit Git Hamburg, 12. Juni 2014...

Page 1: Arbeiten mit dem Versionsverwaltungssystem · Jannik Kramer Arbeiten mit Git Hamburg, 12. Juni 2014 12/36 Git-Branches Branches: Entwicklungszweige Textdatei mit einer Commit ID und

Agentur für cooperation & communication Hamburg, 12. Juni 2014

Arbeiten mit dem

Versionsverwaltungssystem

Jannik KramerProseminar Werkzeuge für das wissenschaftliche Arbeiten

14.07.2014

Page 2: Arbeiten mit dem Versionsverwaltungssystem · Jannik Kramer Arbeiten mit Git Hamburg, 12. Juni 2014 12/36 Git-Branches Branches: Entwicklungszweige Textdatei mit einer Commit ID und

Jannik Kramer Arbeiten mit Git

Hamburg, 12. Juni 2014

02/36

Gliederung

1. Einführung

2. Funktionsweise

3. Arbeiten mit Git

4. Ausblick

5. Zusammenfassung

6. Quellen

Page 3: Arbeiten mit dem Versionsverwaltungssystem · Jannik Kramer Arbeiten mit Git Hamburg, 12. Juni 2014 12/36 Git-Branches Branches: Entwicklungszweige Textdatei mit einer Commit ID und

Jannik Kramer Arbeiten mit Git

Hamburg, 12. Juni 2014

03/36

Versionsverwaltung

Erfassung und Protokollierung aller Änderungen

Gleichzeitige Entwicklung durch mehrere Personen

Repository als Datenbank

Zeitlich geordnete Versionen als Historie

Einführung

Page 4: Arbeiten mit dem Versionsverwaltungssystem · Jannik Kramer Arbeiten mit Git Hamburg, 12. Juni 2014 12/36 Git-Branches Branches: Entwicklungszweige Textdatei mit einer Commit ID und

Jannik Kramer Arbeiten mit Git

Hamburg, 12. Juni 2014

04/36

Zentrale Versionsverwaltung

Client-Server-System

Repository liegt auf einem zentralen Server

Leicht zu administrieren

„Single Point of Failure“

Lock-Modify-Write Arbeitsweise

Einführung

Page 5: Arbeiten mit dem Versionsverwaltungssystem · Jannik Kramer Arbeiten mit Git Hamburg, 12. Juni 2014 12/36 Git-Branches Branches: Entwicklungszweige Textdatei mit einer Commit ID und

Jannik Kramer Arbeiten mit Git

Hamburg, 12. Juni 2014

05/36

Dezentrale Versionsverwaltung

Benutzer besitzt eigenes Repository

Ein offizielles Repositor

Copy-Modify-Merge Arbeitsweise

Ermöglicht Verzweigung

Erfordert Zusammenführen

Kein Konflikt bei simultaner Änderung

Einführung

Page 6: Arbeiten mit dem Versionsverwaltungssystem · Jannik Kramer Arbeiten mit Git Hamburg, 12. Juni 2014 12/36 Git-Branches Branches: Entwicklungszweige Textdatei mit einer Commit ID und

Jannik Kramer Arbeiten mit Git

Hamburg, 12. Juni 2014

06/36

Git

2005 von Linus Torvalds zur Quellcodeverwaltung des Linux Kernel entwickelt

Fähig große Projekte zu verwalten

Keine Network Latency Overhead

Sehr schnell

Vollständige Projekthistory in der lokalen Datenbank

Einführung

Page 7: Arbeiten mit dem Versionsverwaltungssystem · Jannik Kramer Arbeiten mit Git Hamburg, 12. Juni 2014 12/36 Git-Branches Branches: Entwicklungszweige Textdatei mit einer Commit ID und

Jannik Kramer Arbeiten mit Git

Hamburg, 12. Juni 2014

07/36

Git

Vier wichtige Transportprotokolle

Lokal

SSH

Git

HTTP

Tools

Einführung

Page 8: Arbeiten mit dem Versionsverwaltungssystem · Jannik Kramer Arbeiten mit Git Hamburg, 12. Juni 2014 12/36 Git-Branches Branches: Entwicklungszweige Textdatei mit einer Commit ID und

Jannik Kramer Arbeiten mit Git

Hamburg, 12. Juni 2014

08/36

Hauptbestandteile

Workspace

Index

Repository

Local repository

Remote repository

Funktionsweise

Page 9: Arbeiten mit dem Versionsverwaltungssystem · Jannik Kramer Arbeiten mit Git Hamburg, 12. Juni 2014 12/36 Git-Branches Branches: Entwicklungszweige Textdatei mit einer Commit ID und

Jannik Kramer Arbeiten mit Git

Hamburg, 12. Juni 2014

09/36

Git-Objekte

Commit-Objekt

Dateien „Blobs“

Bäume „tree-Objekt“

Inhalt des Verzeichnisses

Spezifiziert die Zuordnung Dateiname und Blob

tags

Einführung

Page 10: Arbeiten mit dem Versionsverwaltungssystem · Jannik Kramer Arbeiten mit Git Hamburg, 12. Juni 2014 12/36 Git-Branches Branches: Entwicklungszweige Textdatei mit einer Commit ID und

Jannik Kramer Arbeiten mit Git

Hamburg, 12. Juni 2014

10/36

Git-Objekte

http://git-scm.com/figures/18333fig0301-tn.png

Einführung

Page 11: Arbeiten mit dem Versionsverwaltungssystem · Jannik Kramer Arbeiten mit Git Hamburg, 12. Juni 2014 12/36 Git-Branches Branches: Entwicklungszweige Textdatei mit einer Commit ID und

Jannik Kramer Arbeiten mit Git

Hamburg, 12. Juni 2014

11/36

SHA1-Hash

Änderungen in Prüfsumme umrechnen

Erstellung beim stagen

Sicherheit

Keine unbemerkten Änderungen

Änderungen können nicht verloren gehen

Funktionsweise

Page 12: Arbeiten mit dem Versionsverwaltungssystem · Jannik Kramer Arbeiten mit Git Hamburg, 12. Juni 2014 12/36 Git-Branches Branches: Entwicklungszweige Textdatei mit einer Commit ID und

Jannik Kramer Arbeiten mit Git

Hamburg, 12. Juni 2014

12/36

Git-Branches

Branches: Entwicklungszweige

Textdatei mit einer Commit ID und SHA-1 Prüfsumme

schnelle Erstellung neuer Branches

gemeinsame Basis dank Ursprungscommit

Eltern Commits -> Baumstruktur

HEAD

Verweist auf den aktuell benutzten Branch

Unterschied Subversion

Einführung

Page 13: Arbeiten mit dem Versionsverwaltungssystem · Jannik Kramer Arbeiten mit Git Hamburg, 12. Juni 2014 12/36 Git-Branches Branches: Entwicklungszweige Textdatei mit einer Commit ID und

Jannik Kramer Arbeiten mit Git

Hamburg, 12. Juni 2014

13/36

Git-Branches

http://git-scm.com/figures/18333fig0305-tn.png

Einführung

Page 14: Arbeiten mit dem Versionsverwaltungssystem · Jannik Kramer Arbeiten mit Git Hamburg, 12. Juni 2014 12/36 Git-Branches Branches: Entwicklungszweige Textdatei mit einer Commit ID und

Jannik Kramer Arbeiten mit Git

Hamburg, 12. Juni 2014

14/36

Git-Branches

http://git-scm.com/book/de/Git-Branching-Was-ist-ein-Branch%3F

Einführung

Page 15: Arbeiten mit dem Versionsverwaltungssystem · Jannik Kramer Arbeiten mit Git Hamburg, 12. Juni 2014 12/36 Git-Branches Branches: Entwicklungszweige Textdatei mit einer Commit ID und

Jannik Kramer Arbeiten mit Git

Hamburg, 12. Juni 2014

15/36

Git-Branches

http://git-scm.com/book/de/Git-Branching-Was-ist-ein-Branch%3F

Einführung

Page 16: Arbeiten mit dem Versionsverwaltungssystem · Jannik Kramer Arbeiten mit Git Hamburg, 12. Juni 2014 12/36 Git-Branches Branches: Entwicklungszweige Textdatei mit einer Commit ID und

Jannik Kramer Arbeiten mit Git

Hamburg, 12. Juni 2014

16/36

Git definiert drei Dateizustände

Commited: „gesichert “

Modified: „verändert“

Staged: „Zum Index hinzugefügt“

Funktionsweise

Page 17: Arbeiten mit dem Versionsverwaltungssystem · Jannik Kramer Arbeiten mit Git Hamburg, 12. Juni 2014 12/36 Git-Branches Branches: Entwicklungszweige Textdatei mit einer Commit ID und

Jannik Kramer Arbeiten mit Git

Hamburg, 12. Juni 2014

17/36

Git Arbeitsprozess

Bearbeitung der Dateien im Arbeitsverzeichnis

Markierung der Dateien/Hinzufügen zum Index für den Commit

Anlegung des Commit, Snapshots werden im Git Verzeichnis gespeichert

Funktionsweise

Page 18: Arbeiten mit dem Versionsverwaltungssystem · Jannik Kramer Arbeiten mit Git Hamburg, 12. Juni 2014 12/36 Git-Branches Branches: Entwicklungszweige Textdatei mit einer Commit ID und

Jannik Kramer Arbeiten mit Git

Hamburg, 12. Juni 2014

18/36

Funktionsweise

Page 19: Arbeiten mit dem Versionsverwaltungssystem · Jannik Kramer Arbeiten mit Git Hamburg, 12. Juni 2014 12/36 Git-Branches Branches: Entwicklungszweige Textdatei mit einer Commit ID und

Jannik Kramer Arbeiten mit Git

Hamburg, 12. Juni 2014

19/36

Identität

Befehl:

$ git config --global user.name "John Doe“

$ git config --global user.email [email protected]

Arbeiten mit Git

Page 20: Arbeiten mit dem Versionsverwaltungssystem · Jannik Kramer Arbeiten mit Git Hamburg, 12. Juni 2014 12/36 Git-Branches Branches: Entwicklungszweige Textdatei mit einer Commit ID und

Jannik Kramer Arbeiten mit Git

Hamburg, 12. Juni 2014

20/36

Einstellungen anzeigen

Befehl: $ git config --list

Arbeiten mit Git

Page 21: Arbeiten mit dem Versionsverwaltungssystem · Jannik Kramer Arbeiten mit Git Hamburg, 12. Juni 2014 12/36 Git-Branches Branches: Entwicklungszweige Textdatei mit einer Commit ID und

Jannik Kramer Arbeiten mit Git

Hamburg, 12. Juni 2014

21/36

Repository anlegen

Befehl:

$ git init

Arbeiten mit Git

Page 22: Arbeiten mit dem Versionsverwaltungssystem · Jannik Kramer Arbeiten mit Git Hamburg, 12. Juni 2014 12/36 Git-Branches Branches: Entwicklungszweige Textdatei mit einer Commit ID und

Jannik Kramer Arbeiten mit Git

Hamburg, 12. Juni 2014

22/36

Dateien zum Index hinzufügen

Befehl: $ git add <dateiname>

Arbeiten mit Git

Page 23: Arbeiten mit dem Versionsverwaltungssystem · Jannik Kramer Arbeiten mit Git Hamburg, 12. Juni 2014 12/36 Git-Branches Branches: Entwicklungszweige Textdatei mit einer Commit ID und

Jannik Kramer Arbeiten mit Git

Hamburg, 12. Juni 2014

23/36

Repository kopieren

Befehl: $ git clone <repository>

$ git clone git://github.com/schacon/grit.git

Arbeiten mit Git

Page 24: Arbeiten mit dem Versionsverwaltungssystem · Jannik Kramer Arbeiten mit Git Hamburg, 12. Juni 2014 12/36 Git-Branches Branches: Entwicklungszweige Textdatei mit einer Commit ID und

Jannik Kramer Arbeiten mit Git

Hamburg, 12. Juni 2014

24/36

Zustand prüfen

Befehl: $ git status

Arbeiten mit Git

Page 25: Arbeiten mit dem Versionsverwaltungssystem · Jannik Kramer Arbeiten mit Git Hamburg, 12. Juni 2014 12/36 Git-Branches Branches: Entwicklungszweige Textdatei mit einer Commit ID und

Jannik Kramer Arbeiten mit Git

Hamburg, 12. Juni 2014

25/36

Branching

Einen Neuen Branch erstellen und aktivieren

$ git branch <branchname>

$ git checkout <branchname>

Arbeiten mit Git

Page 26: Arbeiten mit dem Versionsverwaltungssystem · Jannik Kramer Arbeiten mit Git Hamburg, 12. Juni 2014 12/36 Git-Branches Branches: Entwicklungszweige Textdatei mit einer Commit ID und

Jannik Kramer Arbeiten mit Git

Hamburg, 12. Juni 2014

26/36

Branching

Den Branch wechseln:

$ git checkout <branchname>

Arbeiten mit Git

Page 27: Arbeiten mit dem Versionsverwaltungssystem · Jannik Kramer Arbeiten mit Git Hamburg, 12. Juni 2014 12/36 Git-Branches Branches: Entwicklungszweige Textdatei mit einer Commit ID und

Jannik Kramer Arbeiten mit Git

Hamburg, 12. Juni 2014

27/36

Merging

Branches zusammenführen

$ git merge <branchname>

Zusammengeführte Branches anzeigen:

$ git branch --merged

Arbeiten mit Git

Page 28: Arbeiten mit dem Versionsverwaltungssystem · Jannik Kramer Arbeiten mit Git Hamburg, 12. Juni 2014 12/36 Git-Branches Branches: Entwicklungszweige Textdatei mit einer Commit ID und

Jannik Kramer Arbeiten mit Git

Hamburg, 12. Juni 2014

28/36

Externe Repository

Anzeigen der konfigurierten Server

$ git remote

Beispiel:

$ git remote -v

name1 git://github.com/name1/grit.git

name2 git://github.com/name2/grit.git

name3 git://github.com/name3/grit.git

Arbeiten mit Git

Page 29: Arbeiten mit dem Versionsverwaltungssystem · Jannik Kramer Arbeiten mit Git Hamburg, 12. Juni 2014 12/36 Git-Branches Branches: Entwicklungszweige Textdatei mit einer Commit ID und

Jannik Kramer Arbeiten mit Git

Hamburg, 12. Juni 2014

29/36

Externe Repository anlegen

$ git remote add <shortname> <url>

Beispiel:

$ git remote add jo git://github.com/jojo/jannik.git

Arbeiten mit Git

Page 30: Arbeiten mit dem Versionsverwaltungssystem · Jannik Kramer Arbeiten mit Git Hamburg, 12. Juni 2014 12/36 Git-Branches Branches: Entwicklungszweige Textdatei mit einer Commit ID und

Jannik Kramer Arbeiten mit Git

Hamburg, 12. Juni 2014

30/36

Änderungen herunterladen

$ git pull <remotename>

Einzelne Branches

$ git pull <remonatename> <branchname>

Arbeiten mit Git

Page 31: Arbeiten mit dem Versionsverwaltungssystem · Jannik Kramer Arbeiten mit Git Hamburg, 12. Juni 2014 12/36 Git-Branches Branches: Entwicklungszweige Textdatei mit einer Commit ID und

Jannik Kramer Arbeiten mit Git

Hamburg, 12. Juni 2014

31/36

Änderungen herunterladen

$ git pull origin master

remote: Counting objects: 7, done.

remote: Compressing objects: 100% (4/4), done.

remote: Total 4 (delta 2), reused 0 (delta 0)

Updating 361303d..f2cd831

Fast forward

_layouts/default.html | 1 +

1 files changed, 1 insertions(+),0 deletions

Arbeiten mit Git

Page 32: Arbeiten mit dem Versionsverwaltungssystem · Jannik Kramer Arbeiten mit Git Hamburg, 12. Juni 2014 12/36 Git-Branches Branches: Entwicklungszweige Textdatei mit einer Commit ID und

Jannik Kramer Arbeiten mit Git

Hamburg, 12. Juni 2014

32/36

Änderungen hochladen

$ git push <remotename> <branchname>

Beispiel

$ git push origin master

Counting objects: 7, done.

Compressing objects: 100% (4/4), done.

Writing objects: 100% (4/4), 407 bytes, done.

Total 4 (delta 2), reused 0 (delta 0)

To [email protected]:qrush/gitready.git

361303d..f2cd831 master -> master

Arbeiten mit Git

Page 33: Arbeiten mit dem Versionsverwaltungssystem · Jannik Kramer Arbeiten mit Git Hamburg, 12. Juni 2014 12/36 Git-Branches Branches: Entwicklungszweige Textdatei mit einer Commit ID und

Jannik Kramer Arbeiten mit Git

Hamburg, 12. Juni 2014

33/36

Open Source Projekte benutzen DVCS

Android, Linux-Kernel, VLC Media Player

Es existieren Hosting-Dienste

GitHub

BitBucket

Steigende Userzahlen

Ausblick

Page 34: Arbeiten mit dem Versionsverwaltungssystem · Jannik Kramer Arbeiten mit Git Hamburg, 12. Juni 2014 12/36 Git-Branches Branches: Entwicklungszweige Textdatei mit einer Commit ID und

Jannik Kramer Arbeiten mit Git

Hamburg, 12. Juni 2014

34/36

Ausblick

(http://aniszczyk.org/wp-

content/uploads/2011/11

/gitpopcondebian1.png)

Page 35: Arbeiten mit dem Versionsverwaltungssystem · Jannik Kramer Arbeiten mit Git Hamburg, 12. Juni 2014 12/36 Git-Branches Branches: Entwicklungszweige Textdatei mit einer Commit ID und

Jannik Kramer Arbeiten mit Git

Hamburg, 12. Juni 2014

35/36

Einfache, effiziente Arbeitsweise

Große Projekte

Kein zentraler Server benötigt

Entwickler laden das komplette Projekt in die lokale Umgebung

Unterstützung vieler Übertragungsprotokolle

Gute Unterstützung von nicht-linearer Entwicklung

Zusammenfassung

Page 36: Arbeiten mit dem Versionsverwaltungssystem · Jannik Kramer Arbeiten mit Git Hamburg, 12. Juni 2014 12/36 Git-Branches Branches: Entwicklungszweige Textdatei mit einer Commit ID und

Jannik Kramer Arbeiten mit Git

Hamburg, 12. Juni 2014

36/36

http://aniszczyk.org

http://git-scm.com/

http://de.gitready.com/

http://www.online-tutorials.net/programmierung/git/tutorials-t-3-

263.html

http://wr.informatik.uni-

hamburg.de/_media/teaching/wintersemester_2011_2012/git-

workshop-2011.pdf

Quellen