Du hast deinen AdBlocker an?

Es wäre ein Traum, wenn du ihn für t3n.de deaktivierst. Wir zeigen dir gerne, wie das geht. Und natürlich erklären wir dir auch, warum uns das so wichtig ist. Digitales High-five, deine t3n-Redaktion

Entwicklung & Design

Versionsverwaltung: In 2 Schritten zum eigenen Git-Server

Git ohne GitHub, wir zeigen euch wie es geht. (Screenshot: Git)

Viele kennen es, viele nutzen es: Git. Aber was mache ich, wenn ich meinen Code nicht auf GitHub zur Verfügung stellen will? In diesem Artikel lest ihr, wie ihr euer eigenes kleines Git-System aufbauen könnt.

Wer Versionsverwaltung einsetzt, wird von Git schon mal gehört haben – nicht zuletzt durch GitHub. Das verteilte Versionsverwaltungs-System Git kann aber auch ohne GitHub benutzt werden, was gerade dann hilfreich ist, wenn ihr als Entwickler euren Code nicht bei GitHub speichern wollt. Im folgenden findet ihr eine kurze Einleitung, wie ihr aus eurem Server einen Git-Server machen könnt – perfekt für kleine Teams.

git
Git ist ein verteiltes und Open-Source-Versionierungs-System. (Screenshot: git-scm.com)

Git-Server einrichten

sudo apt-get install git

Damit installiert ihr Git am Server. Als nächstes legt ihr euch einen Benutzer an, der auf alle Repositorys zugreifen kann. Ihr könnt dem Benutzer eine Bash mitgeben, damit die weitere Konfiguration leichter von der Hand geht. Allerdings würde ich im Betrieb dann die „git-shell“ verwenden, anstelle der „bash“ – aber dazu später mehr.

sudo useradd -m -d /var/git -s /bin/bash -c 'Git' git

Das System verfügt nun über den User „Git“ mit dem Home-Verzeichnis /var/git. Mit sudo su - git wechselt ihr in die Rolle von „Git“. Im nächsten Schritt sammelt ihr euch die SSH-Schlüssel der Nutzer ein und speichert diese in der authorized_keys-Datei im Verzeichnis von „Git“ unter ~/.ssh. Achtet darauf, dass nur „Git“ diese Verzeichnis lesen kann und dass nur ein SSH-Schlüssel pro Zeile gültig ist. Das könnt ihr mit dem folgenden Befehlen tun:

mkdir /var/git/.ssh
touch /var/git/.ssh/authorized_keys
chmod 700 /var/git/.ssh

Repositories anlegen und verwalten

Ihr habt jetzt einen Git-Server, auf den nur diejenigen zugreifen können beziehungsweise dürfen, deren SSH-Schlüssel am Server abgespeichert wurden. Der nächste logische Schritt ist das Anlegen eines Repositorys, oder das Einspielen eines bereits vorhandenen.

Davon ausgehend, dass bereits ein Repository auf GitHub exisitiert, könnt ihr dieses mit folgender Anweisung auf euren Server mit migrieren:

git --bare fetch https://username@github.com/username/repository-name.git master:master

Beachtet, dass ihr „username“ durch euren Benutzernamen ersetzen müsst, sowie „repository-name“ durch den Namen des gewünschten Repositorys.

Solltet ihr ein komplett neues Repository anlegen wollen, müsst ihr in einem Zwischenschritt eine Repository-URL hinzufügen. Dazu wechselt ihr in euer lokales Git-Repository-Verzeichnis und führt diese Zeilen aus:

 git remote add origin git@dev.deine-domain.de:repository.git
 git push origin master

Damit legt ihr eine neue Repository-URL an und „pusht“ euren Code auf den Server. Bevor ihr den Code aber ausführt, müsst ihr „dev.deine-domain.de durch den Host-Namen eures Entwicklungs-Servers tauschen.

Fazit: Euer eigener Git-Server

Ihr habt jetzt eine vollfunktionstüchtige Git-Umgebung eingerichtet, auf die Entwickler über den „git“-Account Zugriff haben. Um das zukünftige Arbeiten zu erleichtern, aktivieren wir – wie schon angesprochen – die sogenannte „git-shell“. Diese Shell verhindert ein Ausführen eigenmächtiger Anweisungen der Entwickler auf dem System und limitiert die Fähigkeiten des gemeinsam genutzten „git“-Benutzers auf Befehle, die nur für die Arbeit mit Git relevant sind.

logout
sudo chsh -s /usr/bin/git-shell git

Beim nächsten Login wird die „git-shell“ gestartet und ihr seid bereit, mit eurem eigenen Git-Server eure Projekte zu verwalten. Wem das Thema Versionskontrolle mit Git noch nicht ganz geläufig ist, dem kann ich dieses Git-Tutorial empfehlen – aber auch GitHub bietet eine gute Tutorial-Seite an. Und wenn ihr eine grafische Oberfläche einsetzen wollt, könnt ihr auf folgende Tools zurückgreifen: Gitorious und Gitalist. In der obersten Liga spielt übrigens Stash – wenn ihr also eine Enterprise-Git-Lösung sucht, solltet ihr euch diese Software genauer ansehen.

Habt ihr Vertrauen in GitHub?

Bitte beachte unsere Community-Richtlinien

15 Reaktionen
Waldemar

Wie ist denn das Passwort des neu angelegten GIT-Users? Ich muss das Passwort eingeben, um beispielsweise den öffentlichen SSH Key ablegen zu können.

Antworten
ErikB

GitLab wurde schon oft genannt, benutzt jemand die Kombination Redmine + gitolite? RhodeCode werde ich mir mal anschauen, scheint aber nur als kommerzielle Version nutzbar zu sein oder?

Antworten
Uli

Wir sind letztlich in Sachen Versionskontrolle von Apache Subversion (SVN) zu Git (ergo Gitlab) gewechselt. Wir haben die Alternativen zu SVN aufgeführt und den Migrationsprozess bei uns im Blog dokumentiert: http://bit.ly/migration-git

Antworten
Thomas

Wir benutzen in unserer Firma (bekannter Konsolen-Hersteller) ebenfalls RhodeCode jedoch mit einer deutlich größeren Nutzeranzahl. Wir haben mittlerweile fast alle kleineren Dimensionen (u.a. Gitlab) durch. Jede Firma mit mehr als 20 Developer muss RhodeCode ausprobieren und wird begeistert sein!

Antworten
Markus Weigelt

Wem eine GitLab-Installation oder der eigene Git-Server zu umfangreich ist, der kann auch zu http://www.githost.de gehen. githost.de nutzt GitLab und bietet daher auch eine Alternative zu GitHub vor allem für Closed-Source-Repositories. Bis 5 MB gibt es hier das Repro kostenlos. Das reicht für kleiner Webprojekt völlig zu. Wer mehr Speicher möchte bekommt mehr und das zu einem fairen Preis, denn man bezahlt nur das was man wirklich auch nutzt.

Antworten
Kovah

Nutze das jetzt seit ca. 5 Monaten, bin von BitBucket (SaaS Version von Atlassian Stash) umgestiegen und bereue es keineswegs. Ist zwar wirklich nicht in 5 Minuten installiert, aber sobald es fertig installiert ist läuft es absolut super. In den 5 Monaten keinerlei Probleme gehabt.
Absolute Empfehlung von mir.

Antworten
Mario Janschitz

Danke für das Feedback!
Vielleicht lege ich einen eigenen Artikel für GitLab nach.

Antworten
Bjoern

Hallo,

um das Ganze mal mit gitLab auszuprobieren, kann man auch auf das turnkey Image zurückgreifen.
Git+GitLab im Handumdrehen zum Testen parat.

Viele Grüße

Björn

Antworten
Michael Kühnel

@Ivonne
Danke für den Tipp bezüglich RhodeCode. Habe bis jetzt nur mit das GitLab und Stash gearbeitet. Aber die Code-Review Features von RhodeCode sehen sensationell aus: https://rhodecode.com/features/productivity

Antworten
Thomas

Ich finde diese Anleitung ist nicht bis zum Ende gedacht. Wenn ich nur einen User für alle Mitglieder im Team habe, wird jeder Code unter dem git user gepusht. Dann kann ich im Nachhinein nicht mehr unterscheiden wer welchen Code gepusht hat. Und eigene Shell-User fallen schnell weg, wenn die Entwickler nicht zumindest grundlegende Kenntnisse der Shell haben.
Wer für solche einfachen Aufgaben wie das einrichten eines git-Servers eine Anleitung benötigt, sollte vielleicht sowieso einmal darüber nachdenken ob er dafür geeignet ist einen Server für ein Team bereitzustellen!
Für einen Entwickler allein ist die Anleitung zu gebrauchen, fürs Entwickeln im Team bringt das nichts.

Antworten
Frank Matuse

Ich empfehle auch dringend Gitlab. Damit lassen sich User, Berechtigungen und Repositories vernünftig managen. Die Installation ist sehr gut beschrieben. Have Fun!

Antworten
Marc Eden

Ich unterstreiche auch noch mal den Tipp mit Gitlab (https://www.gitlab.com/gitlab-ce/). Nicht gerade die 5-Minuten-Wordpress-Installation, aber der Aufwand lohnt sich sehr.

Antworten
Werner

Danke fürs Tutorial..gleich mal testen..

Antworten
Ivonne

Also manchmal schüttel ich nur den Kopf über t3n. Warum wird Stash genannt, aber nicht das viel bessere deutsche Software "RhodeCode Enterprise" aus Berlin?

RhodeCode ist kostenlos bis 20 Benutzer, läuft unter Windows und Linux und unterstützt auch Mercurial.

https://rhodecode.com

Antworten
Simon

Zusätzlich zu den genannten Git Oberflächen, gibts noch GitLab. Sehr ähnlich zum bekannten GitHub UI.
https://www.gitlab.com/

Antworten

Melde dich mit deinem t3n-Account an oder fülle die unteren Felder aus.

Abbrechen

Finde einen Job, den du liebst