Git, TortoiseGit und Github installieren und einrichten.

Beschreibung: Was ist eine Versionsverwaltung und wofür brauche ich das?

Kategorie: Extensions, Lexikon, Git

Link zu diesem Artikel: Alles auswählen

[url=https://www.phpbb.de/kb/viewarticle?a=35&sid=b9dc9f734db75a50714cc399409e1ce2]Knowledge Base - Git, TortoiseGit und Github installieren und einrichten.[/url]

Was ist eine Versionsverwaltung und wofür brauche ich das?

Eine Versionsverwaltung dient - wie der Name vermuten lässt - zur Verwaltung von verschiedenen Versionen von Dateien, Dokumenten und Ordnern oder anderen Dingen, die sich über die Zeit verändern können. Ein Beispiel hierfür ist die Wikipedia, wo Änderungen an einem Artikel separat gespeichert werden und sowohl die alte als auch die neue Version verfügbar bleiben. Sehr häufig wird eine Versionsverwaltung im Bereich von Softwareentwicklung eingesetzt.

Der Einsatz einer Software zur Versionsverwaltung bietet diverse Vorteile und Vereinfachungen:
  • Änderungen werden protokolliert: Bei kollaborativer Arbeit können daher andere nachvollziehen, weshalb eine Änderung durchgeführt wurde.
  • Alte Versionen werden archiviert: Unabsichtliche Änderungen können später rückgängig gemacht werden, auch komplett gelöschte Dateien können wiederhergestellt werden, selbst wenn die Löschung schon vor Jahren durchgeführt wurde.
  • Gemeinsamer Zugriff auf die gleichen Dateien wird koordiniert: Änderungen werden automatisch zusammengeführt und erfordern nur im Konfliktfall (Änderungen an der gleichen Zeile einer Datei) den Eingriff des Benutzers.
  • Die gleichzeitige Entwicklung an mehreren Versionszweigen einer Software (z.B. phpBB 3.2.x und phpBB 3.3.x) wird systematisiert und dadurch deutlich vereinfacht. Änderungen können zwischen den Versionszweigen ausgetauscht werden.
Die meisten dieser Vorteile erleichtern vor allem die kollaborative Softwareentwicklung. Allerdings bieten sich auch für einzelne Entwickler oder für den einsamen Administrator einer kleinen Website Vorteile durch die Nutzung einer Versionsverwaltung:
  • Besitzt man mehrere Rechner, so kann man an allen Rechnern arbeiten, ohne sich zu große Sorgen über den Austausch der Software zwischen den Rechnern machen zu müssen. Änderungen können von der Versionsverwaltung automatisch zusammengeführt werden, d.h. wenn man mit veralteten Daten arbeitet aber andere Dinge verändert (und nicht dieselbe Änderung zweimal einbaut) können die Änderungen automatisiert zusammengeführt werden.
  • Wenn man die Dokumentation der Änderungen nutzt, erinnert man sich auch selbst nach einem Jahr noch daran, warum man eine Änderung durchgeführt hat.
  • Wenn man Funktionen in seiner Website nur regelmäßig kurzzeitig benötigt, kann man diese in einem separaten Entwicklungszweig ablegen. Hierdurch lässt sich auch dieser sehr leicht automatisiert mit Änderungen versorgen, die man an der Hauptseite durchführt ohne dass man alle Änderungen doppelt macht.
  • Baut man einen komplizierten Fehler ein, den man nicht finden kann, der aber in alten Versionen nicht auftaucht, stellt einem die Versionsverwaltung einige sehr hilfreiche Möglichkeiten zur Verfügung, um diesen Fehler zu finden.
Zum Abschluss an dieser Stelle noch ein paar Begriffe und Abkürzungen die sehr häufig im Zusammenhang mit Versionsverwaltung auftauchen:
  • Repository Der Speicherort des Archivs. Hier liegen alle von der Software verwendeten Daten zu einem Projekt.
  • Revision Ein Entwicklungszustand einer Software oder allgemein einer Datei.
  • RCS Abkürzung für "Revision Control System" oder auf deutsch: Versionsverwaltungssystem.
  • SVN, CVS Abkürzungen zweier weit verbreiteter Versionsverwaltungssysteme: Subversion und Concurrent Version System.
  • Branch Ein Entwicklungszweig einer Software. Ein Beispiel für zwei verschiedene Branches im phpBB Repository wären phpBB 3.2.x und phpBB 3.3.x (um genau zu sein benannt mit develop-rhea bzw. develop-proteus für die aktuelle Entwicklung).
  • Tag Wichtige Revision, der ein besonderer Name gegeben wurde, damit man schnell auf sie zugreifen kann. Beispiele aus dem phpBB Repository sind release-3.3.0, release-3.2.9, usw., die die jeweils veröffentlichte Version markieren)

Was ist Git?

Git ist ein Versionsverwaltung für Dateien, ähnlich SVN und CVS. Der Fokus von Git liegt dabei auf der verteilten Struktur, bei der sich jeder Benutzer eine Kopie des Repositories anlegt, in seiner Kopie Änderungen macht und dann einen sogenannten Pull Request schickt, damit die Änderungen in das Haupt-Repository übernommen werden.

Installation und Einrichtung

Git für Windows installieren
Als erstes muss Git installiert werden. Auf Windows Computern bietet es sich dabei an, Git for Windows zu verwenden. Bei der Installation sind ein paar Kleinigkeiten zu beachten:
  1. Wer später TortoiseGit als GUI für Git benutzen will, sollte beim Installieren von msysgit darauf achten, die Windows-Explorer Integration zu deaktivieren.
  2. Beim Schritt "Anpassung der PATH Umgebung", sollte man keine Änderung vornehmen und Use Git Bash only markiert lassen.
  3. Als letztes zu Beachten ist die Option der Zeilenenden: in den meisten Repositories wird, so auch bei denen von phpBB.de, werden Unix-Zeilenenden (LF) benutzt. Um das Bearbeiten zu erleichtern, sollte man hier Checkout as-is, Commit Unix-style line endings auswählen.
TortoiseGit installieren
Wer keine GUI braucht und gut mit der Konsole klar kommt, kann von hier aus dann gleich zum "GitHub" Abschnitt weiterspringen. Ansonsten wäre für Windows TortoiseGit die beste Wahl (Wenn ihr ein 64Bit Betriebsystem benutzt, müsst ihr TortoiseGit 64Bit installieren, ansonsten 32 Bit). Bei der Installation sollte man im Normalfall TortoiseGitPlink als SSH-Client verwenden (ist standardmäßig ausgewählt).

Github Account einrichten
Um später euren Code an GitHub schicken zu können, müsst ihr euch dort registrieren. Zum Übertragen eurer Änderungen benötigt ihr allerdings nicht das Github-Passwort das ihr beim Registrieren angebt, sondern einen sogenannten SSH-Schlüssel. Dieser besteht aus 2 Teilen, einem privatem Schlüssel, den nur ihr haben solltet, und einem öffentlichem (public) Schlüssel, der zum Beispiel bei GitHub eingetragen wird.
Um solch ein SSH-Schlüsselpaar (Type SSH-2 RSA) zu erzeugen, könnt ihr das Programm Puttygen benutzen, dass zusammen mit TortoiseGit installiert wird. Vor dem Erstellen solltet ihr noch, in der rechten unteren Ecke, die Länge des Schlüssels auf 4096 Bit ändern, dann auf "Generate" drücken und anschließend mit der Maus über die freie Fläche bewegen. Nach dem Erstellen solltet ihr noch ein "Key passphrase" angeben (ein Passwort das bei der Benutzung des Schlüssels benötigt wird) und anschließend den Privaten und Öffentlichen Schlüssel in Dateien speichern. Der Speicherort ist frei wählbar, ihr müsst nur die Dateien nachher in TortoiseGit angeben, daher solltet ihr euch also den Pfad merken.
Nun müsst ihr noch den gesamten Inhalt aus der oberen Textbox von Puttygen (Public key for pasting into) kopieren und auf github.com in euren Einstellungen unter SSH Schlüssel als neuen Schlüssel eintragen.


Wie man nun mit Git arbeitet, steht in Git Workflow beschrieben.

Als Orientierung dienten die folgenden Artikel und Blog-Einträge:
git-scm.com/book/de/v1/Los-geht%E2%80%99s-Git-installieren - Neuer Link: https://git-scm.com/book/de/v2/Erste-Sc ... stallieren
http://www.informatik.uni-leipzig.de/~g ... ByStep.pdf (Seite offline)
git-scm.com/book/de/v1/Git-auf-dem-Server-Einrichten-eines-Benutzeraccounts - Neuer Link: https://git-scm.com/book/de/v2/Git-auf- ... einrichten
https://graberj.wordpress.com/2012/10/2 ... r-windows/