-
1. Erste Schritte
- 1.1 Über Versionskontrolle
- 1.2 Eine kurze Geschichte von Git
- 1.3 Was ist Git?
- 1.4 Die Kommandozeile
- 1.5 Git installieren
- 1.6 Erstmalige Git-Einrichtung
- 1.7 Hilfe bekommen
- 1.8 Zusammenfassung
-
2. Git Grundlagen
-
3. Git Branching
- 3.1 Branches im Überblick
- 3.2 Grundlegendes 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 Generieren Ihres SSH-Public-Keys
- 4.4 Einrichten des Servers
- 4.5 Git Daemon
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Drittanbieter-Hosting-Optionen
- 4.10 Zusammenfassung
-
5. Verteiltes Git
-
6. GitHub
-
7. Git-Werkzeuge
- 7.1 Revisionsauswahl
- 7.2 Interaktives Staging
- 7.3 Stashing und Bereinigen
- 7.4 Ihre Arbeit signieren
- 7.5 Suchen
- 7.6 Historie umschreiben
- 7.7 Reset entmystifiziert
- 7.8 Fortgeschrittenes Merging
- 7.9 Rerere
- 7.10 Debugging mit Git
- 7.11 Submodule
- 7.12 Bundling
- 7.13 Ersetzen
- 7.14 Credential-Speicher
- 7.15 Zusammenfassung
-
8. Git anpassen
-
9. Git und andere Systeme
- 9.1 Git als Client
- 9.2 Migration zu Git
- 9.3 Zusammenfassung
-
10. Git-Interna
- 10.1 Plumbing und Porcelain
- 10.2 Git-Objekte
- 10.3 Git-Referenzen
- 10.4 Packfiles
- 10.5 Die Refspec
- 10.6 Übertragungsprotokolle
- 10.7 Wartung und Datenwiederherstellung
- 10.8 Umgebungsvariablen
- 10.9 Zusammenfassung
-
Anhang A: Git in anderen Umgebungen
- A1.1 Grafische Oberflächen
- 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
-
Anhang B: Git in Ihre Anwendungen einbetten
- A2.1 Kommandozeilen-Git
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
Anhang C: Git-Befehle
- A3.1 Einrichtung und Konfiguration
- A3.2 Projekte abrufen und erstellen
- A3.3 Grundlegendes Snapshotting
- A3.4 Branching und Merging
- A3.5 Projekte teilen und aktualisieren
- A3.6 Inspektion und Vergleich
- A3.7 Debugging
- A3.8 Patching
- A3.9 E-Mail
- A3.10 Externe Systeme
- A3.11 Administration
- A3.12 Plumbing-Befehle
4.5 Git auf dem Server - Git Daemon
Git Daemon
Als Nächstes richten wir einen Daemon ein, der Repositories über das „Git“-Protokoll bereitstellt. Dies ist eine gängige Wahl für schnellen, unauthentifizierten Zugriff auf Ihre Git-Daten. Denken Sie daran, dass, da dies kein authentifizierter Dienst ist, alles, was Sie über dieses Protokoll bereitstellen, innerhalb seines Netzwerks öffentlich ist.
Wenn Sie dies auf einem Server außerhalb Ihrer Firewall betreiben, sollten Sie es nur für Projekte verwenden, die für die Welt öffentlich sichtbar sind. Wenn sich der Server, auf dem Sie es ausführen, innerhalb Ihrer Firewall befindet, können Sie es für Projekte verwenden, auf die eine große Anzahl von Personen oder Computern (Continuous Integration oder Build-Server) schreibgeschützten Zugriff hat, wenn Sie nicht für jeden eine SSH-Schlüssel hinzufügen möchten.
In jedem Fall ist das Git-Protokoll relativ einfach einzurichten. Grundsätzlich müssen Sie diesen Befehl daemonisiert ausführen
$ git daemon --reuseaddr --base-path=/srv/git/ /srv/git/
Die Option --reuseaddr ermöglicht es dem Server, neu zu starten, ohne auf das Timeout alter Verbindungen warten zu müssen, während die Option --base-path es den Benutzern ermöglicht, Projekte zu klonen, ohne den gesamten Pfad anzugeben. Der Pfad am Ende teilt dem Git-Daemon mit, wo er nach zu exportierenden Repositories suchen soll. Wenn Sie eine Firewall betreiben, müssen Sie außerdem einen Port 9418 auf der Box, auf der Sie dies einrichten, öffnen.
Sie können diesen Prozess auf verschiedene Arten daemonisieren, je nach Betriebssystem, das Sie verwenden.
Da systemd das gängigste Init-System unter modernen Linux-Distributionen ist, können Sie es zu diesem Zweck verwenden. Platzieren Sie einfach eine Datei unter /etc/systemd/system/git-daemon.service mit folgendem Inhalt
[Unit]
Description=Start Git Daemon
[Service]
ExecStart=/usr/bin/git daemon --reuseaddr --base-path=/srv/git/ /srv/git/
Restart=always
RestartSec=500ms
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=git-daemon
User=git
Group=git
[Install]
WantedBy=multi-user.target
Sie haben vielleicht bemerkt, dass der Git-Daemon hier mit git als Gruppe und Benutzer gestartet wird. Passen Sie dies an Ihre Bedürfnisse an und stellen Sie sicher, dass der angegebene Benutzer im System existiert. Überprüfen Sie außerdem, ob sich die Git-Binärdatei tatsächlich unter /usr/bin/git befindet, und ändern Sie den Pfad gegebenenfalls.
Schließlich führen Sie systemctl enable git-daemon aus, um den Dienst beim Booten automatisch zu starten, und können den Dienst mit systemctl start git-daemon bzw. systemctl stop git-daemon starten und stoppen.
Auf anderen Systemen möchten Sie möglicherweise xinetd, ein Skript in Ihrem sysvinit-System oder etwas anderes verwenden – solange Sie diesen Befehl daemonisieren und irgendwie überwachen.
Als Nächstes müssen Sie Git mitteilen, für welche Repositories ein unauthentifizierter, serverbasierter Git-Zugriff zulässig ist. Dies können Sie in jedem Repository tun, indem Sie eine Datei namens git-daemon-export-ok erstellen.
$ cd /path/to/project.git
$ touch git-daemon-export-ok
Das Vorhandensein dieser Datei teilt Git mit, dass es in Ordnung ist, dieses Projekt ohne Authentifizierung bereitzustellen.