logo-gitIm Laufe der nächsten Wochen möchten wir eine Reihe von Artikeln zum Thema Git veröffentlichen. Wie „tickt“ Git? Unser Eindruck ist, dass vor allem der erste Einstieg vielen schwer fällt. Eine zusätzliche Hürde stellt das verwirrende Vokabular dar. Heute daher erst einmal der Versuch einer Einführung, ganz ohne Befehlszeilen-Chinesisch.

Was ist Git?

Laut Wikipedia ist Git

eine freie Software zur verteilten Versionsverwaltung von Dateien.

Im Klartext: Mit Git kann ich sowohl die Versionen tausender Dateien eines Software-Projekts verwalten, als auch die Versionen meiner letzten Keynote-Präsentation. „Verteilt“ ist in diesem Fall eine etwas verwirrende Übersetzung von „distributed“. Ich entscheide mich lieber für „dezentralisiert“.


Dieser Artikel ist Teil einer Reihe.
Bisher ist geplant:
1. Git für WordPress – Einstieg
2. Git für WordPress – Hilfe, Befehlszeile!
3. Git für WordPress – Die wichtigsten Git-Kommandos
4. Git für WordPress – Arbeiten mit Branches
5. Git für WordPress – Projekte auf GitHub
6. Git für WordPress – Versionen zusammenführen
7. Git für WordPress – Tools und Tipps


 

Ein klein wenig Git-Geschichte

Git ist 2005 aus der Entwicklung von Linux entstanden, als dafür eine neue, leistungsfähige Versionsverwaltung gebraucht wurde. Daher fällt in diesem Zusammenhang auch der Name Linus Torvalds. Er hat Git entwickelt.

Die Entwicklung eines Betriebssystems ist ein sehr komplexes Projekt, die Versionsverwaltung wurde daher so konzipiert, dass viele Entwickler unabhängig voneinander am Projekt arbeiten können. Am Ende muss man die Ergebnisse leicht zusammenführen können. Das ist gemeint, wenn von distributed oder dezentralisiert die Rede ist.

Vorteile von Git

Eine der großen Stärken von Git ist, dass jeder, der eine Version des Projekts (Fork) bekommen hat, die komplette „Geschichte“ des Projekts „besitzt“. An seiner Projektversion kann jeder unabhängig von allen anderen arbeiten, sogar unabhängig vom Zugang zum Internet. Die Ergebnisse der Arbeit können später problemlos mit denen anderer Entwickler zusammengeführt werden. Falls es ein Problem mit dem zentralen Server gibt, kann man aus jeder dieser Versionen das Projekt wiederherstellen.

Git ist frei verfügbar und wahrscheinlich die Versionsverwaltungs-Software, die am weitesten verbreitet ist. Dazu beigetragen hat mit Sicherheit GitHub, die Plattform, über die Entwickler kollaborieren und ihren Code der Community zur Verfügung stellen.

Was bedeutet Versionsverwaltung à la Git?

Alle Änderungen, die man im Laufe der Zeit an den eigenen Projekten durchgeführt hat, kann man über Git nachvollziehen. Und im Zweifelsfall auch wieder zurücknehmen.

Git ist als besonders schlank und schnell bekannt. Das kommt daher, dass Git nicht zig Versionen von verschiedenen Dateien anlegt, sondern so genannte Snapshots. Das sind letztlich Momentaufnahmen des Projekts, in denen die Veränderungen gegenüber dem Snapshot davor festgehalten werden. So eine Momentaufnahme erstellt man über den Git-Befehl Commit.
Dateien, die nicht verändert wurden, werden nicht mit aufgenommen, sondern es wird lediglich ein Link zur letzten aktuellen Version dokumentiert.

Anhand der Momentaufnahmen kann man sich Veränderungen jederzeit anschauen, jede Änderungen im Code ist nachvollziehbar. Git bietet endlos viele Möglichkeiten, verschiedene Versionen darzustellen und  zu vergleichen. Wahrscheinlich trägt auch das dazu bei, dass Git für viele erst einmal sehr verwirrend ist. Der persönliche Workflow mit Git sieht je nach Person und Projekt sehr unterschiedlich aus. Hier gibt’s ein paar Beispiele.

Einige Begriffe aus der Git-Welt

Commit

Commit bedeutet, dass man in diesem Moment einen Snapshot von den letzten Änderungen des Projekts machen möchte. Damit ist der aktuelle Zustand verewigt und man kann später immer wieder an diesen Punkt zurückkehren.

Master

Der erste Strang heißt immer Master. Er entsteht automatisch, wenn man Git in einem Verzeichnis installiert. Im Master-Strang wird in der Regel die Version des Projekts verwaltet, die stabil läuft bzw. am weitesten entwickelt ist.

Branch

Eines der wichtigsten Features von Git sind die Branches, die Verzweigungen eines Projekts. Man kann sich die Branches vorstellen wie die Zweige eines Baums. Der Sinn eines Branches ist es, Teile des Projekts weiter entwickeln zu können, ohne die derzeitige stabile Version zu gefährden.

Workflow mit Branches

Nehmen wir an, wir wollen in unserem Projekt an einem Slider arbeiten. Im Master-Strang legen wir eine Verzweigung an, um ungestört am Slider arbeiten zu können. Wir nennen unsere neue Verzweigung „slider“. Im Anschluss teilen wir Git mit, dass wir jetzt in der Verzweigung „slider“ arbeiten wollen. Von jetzt an werden alle Änderungen als Veränderungen im Branch „slider“ verwaltet.

Falls mir jetzt während der Arbeit am Slider einfällt, dass ich ja auch noch den Footer bearbeiten wollte und grade eine geniale Idee habe, kann ich eine neue Verzweigung „footer“ einrichten. Solange ich dort arbeite, legt Git alle Veränderungen unter dem Branch „footer“ ab. Die „slider“-Verzweigung bleibt davon unberührt. Wenn mein Footer fertig ist, kann ich meinen „footer“-Branch mit dem master Branch zusammenführen.

Konflikte lösen

Wenn mehrere Leute an einem Projekt arbeiten, kann es passieren, dass dieselbe Stelle im Code mehrfach verändert wurde. Dann kann man die verschiedenen Versionen nicht einfach in einer neuen Version zusammenführen. In diesem Fall kann ich mir beide Versionen nebeneinander anschauen und entscheiden, mit welcher Version ich weiter arbeiten möchte. Ich kann aber auch eine dritte, neue Version anlegen, in die ich die besten Ideen aus den verschiedenen Branches zusammentrage.

Infografik Grundbegriffe Git

In der Grafik ist das Prinzip des Git-Workflows dargestellt. Die Übersetzungen stammen von Kirsten.

Grafik Git-min