
Seit einer Woche arbeite ich nun mit git. Was ist git und warum bin ich so angetan davon?
git ist ein Versions-Kontroll-System, das heisst, wann immer man eine Datei speichert, kann davon ein Backup gemacht werden – einfach gesagt. Wir alle kennen Backup-Systeme, oder sollten zumindest eines kennen. Zu schnell sind wichtige Daten gelöscht oder nicht mehr auffindbar. git kann aber noch viel mehr, als bloss ein Backup erstellen. Es erstellt quasi einen “Snapshot” aller Dateien und Ordner zu einem gewissen Zeitpunkt. Man kann also immer wieder zu einem Zustand in der Vergangenheit zurück kehren. Das kennen wir Mac Benutzer seit TimeMachine auch schon, doch kann git gezielt eingesetzt werden, um verschiedene Versionen zu managen.
Insbesondere kann man genau sagen, was passieren soll, wenn ich etwas mache. Also zum Beispiel, lade alle neue Dateien auf den Webserver hoch, sobald ich mit einem Zustand zufrieden bin. Da git nun nur die Änderungen kopiert und diese noch verpackt, ist dies in kürzester Zeit gemacht. Es gibt kein manuelles Hochladen per FTP mehr. Auch kann man zuerst alle Dateien genauestens lokal überprüfen. Ein Klick und alle Dateien sind auf dem Server gespiegelt.
Und wenn irgend etwas schief geht, dann geht man einfach zu einem Zustand vorher zurück. Natürlich funktioniert dies auch in sehr kurzer Zeit.
Dies ist bloss eine der vielen Anwendungen von git. In der Regel ist git dazu gedacht, in einem Team an gemeinsamen Projekten zu arbeiten. Dies ist jedoch schon sehr ausführlich dokumentiert und ich möchte in diesem Post (wird wohl in diverse Serien unterteilt werden) auf meinen Workflow für das Administrieren von Webseiten eingehen.
Was brauche ich für git?
Das einzige, was man für das Managen von Websites mit git braucht, wie ich es hier beschreibe, ist ein Provider, bei welchem man SSH Zugang hat und die Möglichkeit, das Programm “gcc” über das Terminal auf dem Server auszuführen. Es ist auch möglich, eine Versionskontrolle nur lokal zu benutzen und anschliessend die Dateien per FTP hoch zu laden, doch vergibt man so viele wertvolle Features von git.
Um zu sehen, ob die Voraussetzungen erfüllt sind, startet man ein Terminal. Dazu wird am einfachsten unter OS X das Programm “Terminal” benutzt, welches sich im Ordner “Dienstprogramme” befindet.
Nun gibt man folgenden Befehl ein:
ssh me@myserver.com
Wobei “me” für deinen Benutzernamen und “myserver.com” für deine Serveradresse steht.
Wenn man vom Provider einen SSH Zugang erhalten hat, wird nun nach dem Passwort gefragt. Sagt einem das Terminal, dass man keinen Zugriff hat, und fragt nicht nach dem Passwort, kannst du git, wie ich es hier beschreibe, vergessen.
Wenn man nun nach dem Passwort gefragt wird, gibt man dieses ein und drückt die Enter-Taste. Anschliessend sollte man sich auf dem Server befinden.
Um zu prüfen, ob man “gcc” ausführen kann, gibt man am besten folgendes ein:
gcc --version
Erhält man nun ein paar Infos zur Version, kann es losgehen
Installation von git auf dem Server
Die Variable $PATH updaten
Es ist wichtig, für alle weiteren Schritte, die Umgebungsvariable $PATH zu aktualisieren, damit der Server später git auch findet. In den meisten Fällen macht man dies über ein Dokument namens “.bashrc”. Dieses Dokument ist in der Regel nicht sichtbar, da es mit einem Punkt beginnt. Trotzdem ist es meistens schon vorhanden. Gib einmal den Befehl
cat .bashrc
auf der Befehlszeile ein. Bekommst du nun die Information, dass keine solche Datei existiert, musst du eine erstellen. Dazu kannst du folgendes eintippen
touch .bashrc
Nun musst du die Datei bearbeiten. Ich weiss nicht, welches Programm bei dir auf dem Server installiert ist, um diese zu bearbeiten. Meistens ist “vi” vorhanden, ich konnte mich bis jetzt damit aber noch nie wirklich anfreunden
So habe ich die Datei einfach über den FTP-Client bearbeitet.
In der Datei muss nun folgendes eingetragen werden:
export PATH=$HOME/opt/bin:$PATH
Überprüfen nun, ob deine Änderung klappt, indem du folgendes in der Befehlszeile eingibst:
source ~./.bashrcecho $PATH
Jetzt solltest du in etwa folgendes zurück bekommen:
/home/me/opt/bin:/usr/local/bin:/bin:/usr/bin
Wie du siehst wird oben als erstes der Pfad zu deinem Heimatverzeichnis + opt/bin ausgegeben. Genau so sollte es sein.
Ein weiterer Test sollte nun gemacht werden. Öffne ein neues Terminalfenster und verbinde dich per ssh auf den Server:
ssh me@myserver.com
dann gibst du folgenden Befehl ein:
echo $PATH
Wenn auch hier das /opt/bin Verzeichnis ausgegeben wird, können wir weiter machen.
Git Installieren
OK, weiter im Text. Ich gehe davon aus, dass du immer noch per SSH mit deinem Server verbunden bist. Nun machst du ein neues Verzeichnis und wechselst in dieses:
cdmkdir srccd src
Hier werden dann die Sourcen für git hineinkopiert.
Nun lädst du dir die aktuellen Sourcen in dieses Verzeichnis:
curl -LO http://kernel.org/pub/software/scm/git/git-1.7.6.tar.bz2
Es kann sein, dass eine neue Version von git existiert. Du kannst dies auf folgender Seite nachschauen:
http://code.google.com/p/git-core/downloads/list
Du solltest also irgendwie an den Link zu den Sourcen gelangen und diese mit “curl” in das Verzeichnung “src” laden können.
Die Sourcen werden nun entpackt:
tar -xjvf git-1.7.6.tar.bz2cd git-1.7.6
Und jetzt kommen wir zum Kompilieren:
./configure --prefix=$HOME/opt
dann
gmake && gmake install
Jetzt folgen viele Zeilen Code. Wenn alles geklappt hat, wirst du darauf hingewiesen und du kannst testen, ob du git ausführen kannst:
git --version
Wenn du die Versionsnummer von git zurück erhältst, ist git korrekt installiert. Du kannst jetzt getrost den “src” Ordner löschen. Der wird nicht mehr gebraucht:
cdrm -r src
Jetzt können wir mit der eigentlichen Arbeit beginnen. Doch werde ich dies in einer weiteren Serie beschreiben.
Natürlich ist es zudem wichtig, dass du auch git auf deiner Maschine installierst, also dem Client. Dazu gibt es einige Distributionen für diverse Systeme. Für OS X findest du die sogenannten “Binaries” hier:
http://code.google.com/p/git-osx-installer/downloads/
Schnapp dir einfach die aktuellste Version und installiere diese.
Es gibt auch zahlreiche Programme, die die Verwendung von Git erleichtern. Meine derzeitigen Favoriten sind:
Gitbox: http://gitboxapp.com
Tower: http://www.git-tower.com
Abschliessend zu diesem ersten Teil möchte ich dir das kostenlose Buch “Pro Git” sehr empfehlen. Da steht alles drin, was du brauchst um git zu verstehen:
Im nächsten Teil werde ich eine kurze grundlegende Einführung in die Verwendung von git geben. Ich hoffe, dass ich in den nächsten Tagen dafür etwas Zeit finde.
Anschliessend wagen wir uns dann an ein konkretes Projekt, wie man eine bestehende Webseite mit git administriert.