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

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

15 Kommentare
Simon
Simon

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

Antworten
Ivonne
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
Werner
Werner

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

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
Frank Matuse
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
Thomas
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
Michael Kühnel
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
Bjoern
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
Mario Janschitz

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

Antworten
Kovah
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
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
Thomas
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
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
ErikB
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
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

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

Bitte schalte deinen Adblocker für t3n.de aus!

Hey du! Schön, dass du hier bist. 😊

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team bestehend aus 65 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Danke für deine Unterstützung.

Digitales High Five,
Stephan Dörner (Chefredakteur t3n.de) & das gesamte t3n-Team

Anleitung zur Deaktivierung