Antworten auf Ihre häufigsten Fragen

Wie nutze ich die Git Versionsverwaltung?

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.


otto.friedrich@hosteurope.de xanthippe.ypsilante@hosteurope.de hercules.ikarus@hosteurope.de