Lucio Waßill
@Cyberschorsch
Versionskontrolle ist das Kontrollieren von Änderungen und das Verwalten von Versionen an Dateien
<!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
Projekt
Datei 1
Datei 2
Datei 3
Intern
Extern
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.
Ein Repository ist ein Archiv für ein Projekt und beinhaltet alle Änderungen und Versionen der Dateien.
Ein Branch beschreibt zusammenhängende
Änderungen in einem Projekt. Es gibt mindestens einen Branch und es kann beliebig viele Branches in einem Projekt geben.
Ein Commit ist ein einzelner Änderungseintrag in einem Branch. Es beschreibt mindestens eine Änderung an einer Datei und enthält eine Beschreibung der Änderung.
Clone beschreibt den Download eines gesamten Repositorys
Ein Push schiebt lokale Änderungen in einem Branch in ein Ziel-Repository.
Ein Pull lädt Änderungen eines Branches von einem Repository in das lokale Repository.
Fetch holt Informationen zu Änderungen von einem Repository.
Ein Checkout liest einen bestimmten Commit aus.
CVS/SVN:
Speichern Deltas (diffs) zu einer Basis-Version einer Datei
Git: Speichert Snapshots des Projektes
Workflow:
Ein Merge beschreibt das Zusammenführen von Änderungen aus zwei unterschiedlichen Branches.
Fast-Forward Merge
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.
Ein Rebase wendet die Commits eines Branches auf den Basis-Branch an. Dadurch entstehen neue Commits und eine saubere, lineare Commit-History.