2 Januar 2013 11:22

git-Remote schnell und einfach

Dass man mit $ git init lokal ein Repository erstellt und dann Daten committen kann, dürfte bekannt sein. Aber das schöne an git ist unter anderem, dass man die Daten über Remotes an unterschiedlichen Orten speichern kann

Den meisten dürfte github ein Begriff sein. Dort kann man kostenlos Remotes einrichten, die von jedem lesbar sind. Privat kostet es hingegen. Ist man im Besitz eines eigenen Servers, kann man diesen leicht dafür nutzen.

Häufig wird dann auf gitolite zurückgegriffen. Das ist ein umfangreiches Tool zur Verwaltung von Zugriffsrechten. Letztendlich ist damit ein Zugriff wie bei github möglich (Benutzer, Gruppen, git-url-Format).

Es geht jedoch auch einfacher, wenn man diese umfangreiche Rechteveraltung nicht braucht. git ist nämlich von Haus aus ideal für entfernte Remotes geeignet. Alles, was man braucht, ist ein ssh-Zugang.

Erstellen des Remotes

Man sucht sich zuerst ein nettes Plätzchen auf dem Server, z.B. ~/git-remotes. Dort erstellt man ein Unterverzeichnis für den neuen Remote. Aus Konvention besitzt dieses Verzeichnis die Endung .git.

$ cd ~/git-remotes
$ mkdir demo.git

Anschließend muss dieses Verzeichnis in ein git-Remote verwandelt werden.

$ cd demo.git
$ git --bare init
Initialized empty Git repository in ~/git-remotes/demo.git/
$ git config core.sharedRepository 1
$ git config receive.denyNonFastForwards true

Zuerst wird in das Verzeichnis gewechselt, dann die git-Struktur erzeugt. Das --bare bedeutet, dass keine Arbeitskopie erzeugt werden soll. Anschließend werden (optionale) Optionen gesetzt, damit die Dateien Gruppenrechte erhalten und beim git push keine Commits überschrieben werden.

Remote dem lokalen Respository hinzufügen

Zum Schluss muss dieser Remote nur noch unserem lokalen Repository hinzugefügt und die Daten gepusht werden.

$ git remote add origin server:git-remotes/demo.git
$ git push -u origin master

server ist dabei entweder eine Domain (dann gilt der aktuelle Benutzername) oder ein Server aus der ~/.ssh/config. Möchte man den Benutzernamen oder Port direkt angeben, so kann man auch ssh://benutzer@server:port/absoluter/pfad nehmen.

Beim push sorgt das -u dafür, dass dieser Remote als upstream in die Konfiguration eingetragen wird. Das heißt, dass beim nächsten mal nur ein git push notwendig ist.

Kommentare

Powered by BetaBlog
Login | RSS Beiträge RSS Kommentare Impressum