Versionskontrolle mit Git
Lucio Waßill
@Cyberschorsch
Versionskontrolle?
GIT?
DEMO!
Versionskontrolle
Risiken & Chancen
Wie es nicht funktioniert
Was ist Versionskontrolle?
Versionskontrolle ist das Kontrollieren von Änderungen und das Verwalten von Versionen an Dateien
Einfaches Beispiel: Tippfehler
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>Webmontag Demo</title>
</head>
<body>
<p>Kleines Beispeil</p>
</body>
</html>
Version 1
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>Webmontag Demo</title>
</head>
<body>
<p>Kleines Beispiel</p>
</body>
</html>
Version 2
Beispiel: Team
Projekt
Datei 1
Datei 2
Datei 3
Intern
Extern
Weiteres Beispiel
Annahme:
Beispielseite ist bereits online.
Es gibt zwei Tasks:
Task 1: Bugfix für die Überschrift
Task 2: Erweitern der Beispielseite
Beides soll parallel entwickelt werden. Task 1 soll sofort live. Task 2 nach einer Abnahme eines Meilensteins, eventuell kommen noch mehr Tasks dazu die dann zusammen live gestellt werden sollen.
Beispielszenario
Title Text
Begriffsklärungen
Repository
Ein Repository ist ein Archiv für ein Projekt und beinhaltet alle Änderungen und Versionen der Dateien.
Branch
Ein Branch beschreibt zusammenhängende
Änderungen in einem Projekt. Es gibt mindestens einen Branch und es kann beliebig viele Branches in einem Projekt geben.
Commit
Ein Commit ist ein einzelner Änderungseintrag in einem Branch. Es beschreibt mindestens eine Änderung an einer Datei und enthält eine Beschreibung der Änderung.
Begriffsklärungen
Clone
Clone beschreibt den Download eines gesamten Repositorys
Push
Ein Push schiebt lokale Änderungen in einem Branch in ein Ziel-Repository.
Pull
Ein Pull lädt Änderungen eines Branches von einem Repository in das lokale Repository.
Fetch
Fetch holt Informationen zu Änderungen von einem Repository.
Checkout
Ein Checkout liest einen bestimmten Commit aus.
Repository
Zentral
- Repository auf einem zentralen Server (Autorität)
- Entwickler holen Änderungen von Server, bearbeiten lokal und legen Änderungen auf Server ab
- Keine lokale Gesamtkopie, Verbindung zum Remote wird benötigt
- Bsp: CVS, SVN
Verteilt
- Mehrere Repositories
- Entwickler haben komplett geclontes Repository lokal
- zentrales Repository dennoch möglich (Autorität)
- Commits können ohne Verbindung zum Haupt-Repo erledigt werden
- Bsp: Git, Mercury, Bazaar
Vorteil DCVS
- Schnelleres Arbeiten im Projekt da keine Verbindung zum Server benötigt (außer Push/Pull)
- Änderungen können lokal bearbeitet und überarbeitet werden bevor es im Hauptrepo sichtbar ist
- Hauptrepository kann sauber gehalten werden (frei von Entwicklerbranches, nur relevante Branches werden veröffentlicht)
Nachteil DCVS
- Große Projekte mit vielen Änderungen / Branches benötigen viel Platz
- Clone kann u.U. lange dauern
Warum also Versionskontrolle?
- Nachvollziehbares Archiv eines Projektes
- Unterschiede zwischen Dateien erkennen
- Komfortables Arbeiten im Team
- Einheitliche Workflows
- Qualitätssicherung
- uvm..
Git
Ein System
sie zu versionieren,
sie ewig zu committen und in die Repositories zu pushen
Git: DVCS Modell
Git: Änderungen
CVS/SVN:
Speichern Deltas (diffs) zu einer Basis-Version einer Datei
Git: Speichert Snapshots des Projektes
Git: Änderungen
Workflow:
- Datei ändern
- Zum Index hinzufügen (stagen)
- Commiten
Git: Lifecycle von Dateien
Git: Branches
Git: Merge
Merge
Ein Merge beschreibt das Zusammenführen von Änderungen aus zwei unterschiedlichen Branches.
Fast-Forward Merge
Git: Merge
Merge-Commit
Ein Merge-Commit entsteht, wenn Änderungen in einem Branch vorhanden sind, die nicht über einen Fast-Forward gemergt werden.
Ein Merge-Commit hat deshalb mehr als einen Vorgänger.
Git: Rebase
Rebase
Ein Rebase wendet die Commits eines Branches auf den Basis-Branch an. Dadurch entstehen neue Commits und eine saubere, lineare Commit-History.
Git:
Git-Flow
Getting Started with Git
Tools: Smartgit
Tools: Tower
Online-Repositorys
Github.com
- Kostenfreie öffentliche Repositories
- Riesiges öffentliches Projekt-Archiv
- Issue-Tracking, Collaboritive-Features...
- viele Integrationen, Web-Hooks...
Bitbucket.com
- Kostenfreie öffentliche Repositories
- Kostenfreie private Repositories (max 5 Nutzer pro Repo)
- Issue-Tracking, Collaboritive-Features...
- viele Integrationen, Web-Hooks...
Gitlab.com
- "Github" zum selber Hosten
- viele Integrationen, Web-Hooks...
Erste Schritte
- Leeres Repository anlegen
- Datei(-en) hinzufügen
- Stagen
- Committen
Demo-Time!
Versionskontrolle mit Git
By Cyberschorsch
Versionskontrolle mit Git
Eine Einführung in die Versionskontrolle
- 704