-
1. Erste Schritte
-
2. Git Grundlagen
-
3. Git Branching
- 3.1 Branches auf einen Blick
- 3.2 Einfaches Branching und Merging
- 3.3 Branch-Management
- 3.4 Branching-Workflows
- 3.5 Remote-Branches
- 3.6 Rebasing
- 3.7 Zusammenfassung
-
4. Git auf dem Server
- 4.1 Die Protokolle
- 4.2 Git auf einem Server einrichten
- 4.3 Erstellung eines SSH-Public-Keys
- 4.4 Einrichten des Servers
- 4.5 Git-Daemon
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Von Drittanbietern gehostete Optionen
- 4.10 Zusammenfassung
-
5. Verteiltes Git
-
6. GitHub
-
7. Git Tools
- 7.1 Revisions-Auswahl
- 7.2 Interaktives Stagen
- 7.3 Stashen und Bereinigen
- 7.4 Ihre Arbeit signieren
- 7.5 Suchen
- 7.6 Den Verlauf umschreiben
- 7.7 Reset entzaubert
- 7.8 Fortgeschrittenes Merging
- 7.9 Rerere
- 7.10 Debuggen mit Git
- 7.11 Submodule
- 7.12 Bundling
- 7.13 Replace (Ersetzen)
- 7.14 Anmeldeinformationen speichern
- 7.15 Zusammenfassung
-
8. Git einrichten
- 8.1 Git Konfiguration
- 8.2 Git-Attribute
- 8.3 Git Hooks
- 8.4 Beispiel für Git-forcierte Regeln
- 8.5 Zusammenfassung
-
9. Git und andere Systeme
- 9.1 Git als Client
- 9.2 Migration zu Git
- 9.3 Zusammenfassung
-
10. Git Interna
-
A1. Anhang A: Git in anderen Umgebungen
- A1.1 Grafische Schnittstellen
- A1.2 Git in Visual Studio
- A1.3 Git in Visual Studio Code
- A1.4 Git in IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine
- A1.5 Git in Sublime Text
- A1.6 Git in Bash
- A1.7 Git in Zsh
- A1.8 Git in PowerShell
- A1.9 Zusammenfassung
-
A2. Anhang B: Git in Ihre Anwendungen einbetten
- A2.1 Die Git-Kommandozeile
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
A3. Anhang C: Git Kommandos
- A3.1 Setup und Konfiguration
- A3.2 Projekte importieren und erstellen
- A3.3 Einfache Snapshot-Funktionen
- A3.4 Branching und Merging
- A3.5 Projekte gemeinsam nutzen und aktualisieren
- A3.6 Kontrollieren und Vergleichen
- A3.7 Debugging
- A3.8 Patchen bzw. Fehlerkorrektur
- A3.9 E-mails
- A3.10 Externe Systeme
- A3.11 Administration
- A3.12 Basisbefehle
4.8 Git auf dem Server - GitLab
GitLab
GitWeb ist allerdings ziemlich einfach gehalten. Wenn Sie nach einem moderneren, voll ausgestatteten Git-Server suchen, gibt es einige Open-Source-Lösungen, die Sie stattdessen installieren können. Da GitLab einer der beliebtesten ist, werden wir uns mit der Installation im Detail befassen und es als Beispiel verwenden. Dies ist etwas schwieriger als die GitWeb-Option und erfordert mehr Wartung, aber es ist eine viel umfassendere Lösung.
Installation
GitLab ist eine datenbankgestützte Webanwendung, so dass die Installation etwas aufwändiger ist als bei einigen anderen Git-Servern. Glücklicherweise ist dieser Prozess sehr gut dokumentiert und unterstützt. GitLab empfiehlt dringend, GitLab über das offizielle Omnibus GitLab-Paket auf zu installieren.
Die anderen Installationsmethoden sind:
-
GitLab Helm-Chart zur Verwendung mit Kubernetes.
-
Dockerisierte GitLab-Pakete zur Verwendung mit Docker.
-
Direkt sus den Quelldateien.
-
Cloud-Anbieter wie AWS, Google Cloud Platform, Azure, OpenShift und Digital Ocean.
Weitere Informationen finden Sie in der Readme-Datei GitLab Community Edition (CE).
Administration
Die Verwaltungsoberfläche von GitLab wird über das Internet aufgerufen.
Benutzen Sie einfach Ihren Browser, um den Hostnamen oder die IP-Adresse, auf der GitLab installiert ist, anzugeben, und melden Sie sich als Admin-Benutzer an.
Der Standardbenutzername ist admin@local.host
, das Standardpasswort ist 5iveL!fe
(das Sie nach der Eingabe ändern müssen).
Klicken Sie nach der Anmeldung im Menü oben rechts auf das Symbol „Admin-Bereich“.
Benutzer
Jeder der Gitlab nutzt muß ein Benutzerkonto besitzen.
Benutzerkonten sind recht simple. Hauptsächlich beinhalten sie persönliche Informationen, die an Login-Daten geknüpft sind.
Jedes Benutzerkonto hat einen namespace (Namensraum), der eine logische Gruppierung von Projekten ist, die diesem Benutzer gehören.
Wenn der Benutzer jane ein Projekt mit dem Namen project hätte, wäre die URL dieses Projekts http://server/jane/project
.
![Das Fenster der Benutzerverwaltung von GitLab](png/gitlab-users.png)
Das Entfernen eines Benutzers kann auf zwei Arten erfolgen. Das „Blockieren“ eines Benutzers verhindert, dass er sich am GitLab anmeldet, aber alle Daten unter dem Namensraum dieses Benutzers bleiben erhalten, und mit der E-Mail-Adresse dieses Benutzers signierte Commits werden weiterhin mit seinem Profil verknüpft.
Das „Zerstören“ eines Benutzers hingegen entfernt ihn vollständig aus der Datenbank und dem Dateisystem. Alle Projekte und Daten in seinem Namensraum werden entfernt, und alle Gruppen, die sich in seinem Besitz befinden, werden ebenfalls entfernt. Das ist natürlich eine viel dauerhaftere und destruktivere Aktion, die selten angewendet wird.
Gruppen
Eine GitLab-Gruppe ist eine Kollektion von Projekten, zusammen mit Daten darüber, wie Benutzer auf diese Projekte zugreifen können.
Jede Gruppe hat einen Projektnamensraum (genauso wie Benutzer), so dass, wenn die Gruppe training ein Projekt materials hat, die URL http://server/training/materials
lautet.
![Der Admin-Bildschirm für die Gruppenverwaltung von GitLab](png/gitlab-groups.png)
Jede Gruppe ist einer Reihe von Benutzern zugeordnet, von denen jeder eine Berechtigungsstufe für die Projekte der Gruppe und der Gruppe selbst hat. Diese reichen von „Guest“ (nur Themen und Chat) bis hin zu „Owner“ (volle Kontrolle über die Gruppe, ihre Mitglieder und ihre Projekte). Die Arten von Berechtigungen sind zu zahlreich, um sie hier aufzulisten, aber GitLab hat einen hilfreichen Link auf dem Administrationsbildschirm.
Projekte
Ein GitLab-Projekt entspricht in etwa einem einzelnen Git-Repository. Jedes Projekt gehört zu einem einzigen Namensraum, entweder einem Benutzer oder einer Gruppe. Wenn das Projekt einem Benutzer gehört, hat der Projektbesitzer die direkte Kontrolle darüber, wer Zugriff auf das Projekt hat; falls das Projekt einer Gruppe gehört, werden auch die Berechtigungen der Gruppe auf Benutzerebene wirksam.
Jedes Projekt hat eine Zugriffsebene, die steuert, wer Lesezugriff auf die Seiten und das Repository des Projekts hat.
Wenn ein Projekt privat ist, muss der Eigentümer des Projekts bestimmten Benutzern explizit Zugriff gewähren.
Ein internes Projekt ist für jeden angemeldeten Benutzer sichtbar, und ein öffentliches (engl. public) Projekt ist für jeden sichtbar.
Beachten Sie, dass dies sowohl den Zugriff auf git fetch
als auch den Zugriff auf die Web-Benutzeroberfläche für dieses Projekt steuert.
Hooks
GitLab bietet Unterstützung für Hooks, sowohl auf Projekt- als auch auf Systemebene. Für beide führt der GitLab-Server einen HTTP POST mit einem beschreibenden JSON durch, wenn relevante Ereignisse eintreten. Auf diese Weise können Sie Ihre Git-Repositorys und GitLab-Instanzen mit dem Rest Ihrer Entwicklungsverwaltung verbinden, wie z.B. CI-Server, Chatrooms oder Bereitstellungstools.
Grundlegende Anwendung
Das erste, was Sie mit GitLab anfangen sollten, ist das Erstellen eines neuen Projekts. Dies geschieht durch Anklicken des Symbols „+“ in der Symbolleiste. Sie werden nach dem Namen des Projekts gefragt, zu welchem Namensraum es gehören soll und wie hoch seine Sichtbarkeit sein soll. Das meiste, was Sie hier angeben, ist nicht permanent und kann später über die Einstellungs-Oberfläche angepasst werden. Klicken Sie auf „Projekt erstellen“, und Sie sind fertig.
Sobald das Projekt existiert, werden Sie es vermutlich mit einem lokalen Git-Repository verbinden wollen.
Jedes Projekt ist über HTTPS oder SSH zugänglich, von denen jede zur Konfiguration einer externen Verbindung mit Git verwendet werden kann.
Die URLs sind oben auf der Startseite des Projekts sichtbar.
Für ein bestehendes lokales Repository erstellt dieser Befehl einen Remote mit Namen gitlab
für den gehosteten Standort:
$ git remote add gitlab https://server/namespace/project.git
Wenn Sie noch keine lokale Kopie des Repositorys haben, können Sie das ganz einfach nachholen:
$ git clone https://server/namespace/project.git
Die Web-Benutzeroberfläche bietet Zugriff auf mehrere nützliche Anzeigen des Repositorys selbst. Die Homepage jedes Projekts zeigt die letzten Aktivitäten an, und Links oben führen Sie zu Ansichten der Projektdateien und zum Commit-Log.
Zusammen arbeiten
Die einfachste Art der Zusammenarbeit bei einem GitLab-Projekt besteht darin, jedem Benutzer direkten Push-Zugriff auf das Git-Repository zu ermöglichen. Sie können einen Benutzer zu einem Projekt hinzufügen, indem Sie im Abschnitt „Mitglieder“ der Einstellungen dieses Projekts den neuen Benutzer einer Zugriffsebene zuordnen (die verschiedenen Zugriffsebenen werden in den Gruppen ein wenig erläutert). Indem ein Benutzer eine Zugriffsebene von „Developer“ oder höher erhält, kann dieser Benutzer Commits und Branches direkt und ohne Einschränkung in das Repository pushen.
Eine weitere, stärker entkoppelte Art der Zusammenarbeit ist die Nutzung von Merge-Anfragen.
Diese Funktion ermöglicht es jedem Benutzer, der ein Projekt sehen kann, kontrolliert dazu beizutragen.
Benutzer mit direktem Zugriff können einfach einen Branch erstellen, Commits auf ihn verschieben und einen Merge-Request von ihrem Branch zurück in den master
oder einen anderen Branch einreichen.
Benutzer, die keine Push-Berechtigungen für ein Repository haben, können es „forken“ (ihre eigene Kopie erstellen), Push-Commits für diese Kopie erstellen und einen Merge-Request von ihrer Fork zurück zum Hauptprojekt anfordern.
Dieses Modell ermöglicht es dem Eigentümer, die volle Kontrolle darüber zu behalten, was wann in das Repository gelangt, und gleichzeitig Beiträge von unbekannten Benutzern zu ermöglichen.
Merge-Requests und Issues sind die Hauptelemente der langjährigen Zusammenarbeit in GitLab. Jede Merge-Anfrage ermöglicht eine zeilenweise Diskussion der vorgeschlagenen Änderung (was eine einfache Art der Code-Überprüfung unterstützt), sowie einen allgemeinen Diskussions-Thread. Beide können Benutzern zugeordnet oder in Milestone-Etappen organisiert werden.
Dieser Abschnitt konzentriert sich hauptsächlich auf die Git-bezogenen Funktionen von GitLab, aber als ausgereiftes Programm bietet es viele weitere Funktionen, die Ihnen bei der Teamarbeit helfen, wie Projekt-Wikis und System-Wartungstools. Ein Vorteil für GitLab ist, dass Sie nach der Einrichtung und Inbetriebnahme des Servers selten eine Konfigurationsdatei anpassen oder über SSH auf den Server zugreifen müssen; die überwiegende Verwaltung und allgemeine Nutzung kann über die Browser-Oberfläche erfolgen.