In diesem Artikel möchten wir Ihnen eine kleine Einführung in die Nutzung der dezentralen Software-Versionsverwaltung Git auf Ihrem Virtual Server Managed, Dedicated Server Managed, WebServer oder WebServer Dedicated geben.
Git ist eine Software zur verteilten Versionsverwaltung, die im Gegensatz zu vielen anderen Lösungen ohne zentralen Server auskommt. Git macht es einfach, viele Branches parallel zu pflegen und zwischen verschiedenen Repositories auszutauschen. Weitere Informationen zur Verwendung von Git für Ihre Softwareprojekte finden Sie z.B. im Ubuntu Wiki oder auf Englisch unter Version Control for Designers oder Everyday GIT With 20 Commands Or So. Eine ausführliche Referenz finden Sieim online verfügbaren Pro Git Book.
Grundeinrichtung
Bevor Sie das erste Mal mit Git arbeiten, ist es erforderlich, zunächst Ihren Namen und eine E-Mail-Adresse in der Git-Konfiguration zu hinterlegen. Diese Daten verwendet Git zur Kennzeichnung der von Ihnen vorgenommenen Änderungen. Die Grundkonfiguration erfolgt auf der Kommandozeile mit:
git config --global user.name "IHR NAME"
git config --global user.email ihre@mail.tld
Die Daten werden in der Datei .gitconfig in Ihrem HOME-Verzeichnis hinterlegt. Aus Sicherheitsgründen ist es mit dem SSH-Benutzer wpxxxxxxx nicht möglich, in diesem Verzeichnis Dateien zu erstellen. Daher müssten Sie hierfür entweder den SSH-Benutzer ftpxxxxxxx verwenden oder mit sudo in dessen Kontext wechseln. Weitere Informationen zum SSH-Zugang finden Sie hier.
Möchten Sie für ein bestimmtes Repository andere Daten verwenden, dann führen Sie diesen Befehl einfach im Stammverzeichnis des Repositories ohne die Option "--global" aus.
Erste Schritte
Um ein neues Repository anzulegen wechseln Sie in das Verzeichnis, das zum Stammverzeichnis des Repositories werden soll und initialisieren das Repository mit
git init
Um Dateien neu in die Versionsverwaltung aufzunehmen verwenden Sie
git add dateiname.pl
Mit dem Befehl
git add .
können Sie auch alle unterhalb des aktuellen Verzeichnisses bereits existierenden Dateien aufnehmen. Über diese Befehle werden die Dateien jedoch zunächst nur dem so genannten Index hinzugefügt, die Inhalte der Dateien werden noch nicht eingecheckt. Mit
git status
können Sie sich den aktuellen Index anzeigen lassen. In dieser Übersicht sehen Sie alle neuen Dateien, die noch nicht eingecheckt wurden sowie noch nicht im Index aufgenommene Änderungen. Nach jeder Veränderung an einer Datei müssen diese Änderungen zunächst mit git add
wieder in den Index aufgenommen werden.
Mit
git commit
werden die Änderungen im aktuellen Index dann eingecheckt. Es öffnet sich dann automatisch ein Editor, in dem Sie einen Kommentar zu diesem commit angeben können. Als Editor verwendet Git den in der Umgebungsvariablen $EDITOR
hinterlegten Editor oder als Standard vi (auf einem Virtual Server Managed stehen Ihnen z.B. joe, pico, nano oder vim als Editoren zur Verfügung).
Mit Repositories arbeiten
Um eine lokale Kopie aus einem bestehenden entfernten Repository auszuschecken verwenden Sie den Befehl git clone
, zum Beispiel so:
git clone git://github.com/scrooloose/nerdtree.git
Dies legt eine lokale Kopie des gesamten Repositories an und checkt den aktuellen HEAD aus. Der clone
Befehl kann mit Gits eigenem Protokoll, über HTTP, SSH oder Pfade im Dateisystem ausgeführt werden.
Als Anlaufstelle für die Entwicklung im Team eignen sich so genannte Bare Repositories, also Repositories, in deren Verzeichnissen selbst keine Projektdateien ausgecheckt werden. Im Gegensatz zu normalen Repositories liegen dort die Git-Dateien nicht in einem .git-Unterverzeichnis sondern direkt im Repository-Verzeichnis. Bare Repositories können mit git clone --bare
von bestehenden Entwicklungs-Repositories kopiert oder über git init --bare
neu erstellt werden. Die Verzeichnisnamen von Bare Repositories enden laut Konvention jeweils auf ".git", zum Beispiel "meinprojekt.git".
Git und SSH
Als verteilte Versionsverwaltung unterscheidet Git nicht zwischen Server und Client, Änderungen können zwischen Repositories mit git push
oder git pull
in beide Richtungen übertragen werden. Unterstützung für SSH ist in Git eingebaut. Um zum Beispiel ein Bare Repository, das auf Ihrem Server liegt in ein lokales Entwicklungsverzeichnis zu klonen, können Sie folgenden Befehl verwenden:
git clone ssh://wp1234567@example.com/~/pfad/zum/repo.git
Die Pfadangabe ist in diesem Fall relativ zum Home-Verzeichnis ("~") auf Ihrem Server. Nachdem Sie Änderungen vorgenommen und lokale Commits durchgeführt haben, können Sie diese in den master
Branch auf den Server pushen mit
git push origin master
Öffentliche Repositories einrichten
Auf einem Virtual Server Managed ist die Nutzung von git-daemon zur Veröffentlichung von Repositories über das Git-eigene Protokoll nicht möglich. Sie können ein Git-Repository jedoch auch ganz einfach über den Webserver zur Verfügung stellen.
Klonen Sie dazu zunächst das Repository, das Sie veröffentlichen möchten in ein neues Bare Repository. Wechseln Sie jetzt in das Repository-Verzeichnis und führen folgende Befehle aus
git --bare update-server-infomv hooks/post-update.sample hooks/post-update
chmod a+x hooks/post-update
Ein solches Repository steht jetzt öffentlich zur Verfügung und kann mit einem Befehl der Form
git clone yourserver.com/projekt.git
geklont werden.
Beachten Sie bitte, dass die von uns eingesetzte Git-Version die Veröffentlichung über git-http-backend noch nicht unterstützt.
Wird von einem öffentlichem Repository per HTTP geklont, ist es nicht möglich, Änderungen direkt über git push origin
zu pushen, da push ausschließlich per SSH zur Verfügung steht und als origin-URL in diesem Fall in der Datei ".git/config" die http-URL hinterlegt ist. Sie können jedoch jederzeit von Ihrem Server aus ein git fetch
oder git pull
von dem externen Repository in Ihr öffentliches Repository durchführen.
Ein einfaches Webinterface zum Durchsuchen von Repositories ist z.B. die PHP-Software GitList.