-
1. Kom igång
- 1.1 Om versionshantering
- 1.2 En kort historik av Git
- 1.3 Vad är Git?
- 1.4 Kommandoraden
- 1.5 Installera Git
- 1.6 Använda Git för första gången
- 1.7 Få hjälp
- 1.8 Sammanfattning
-
2. Grunder i Git
- 2.1 Skaffa ett Git-förvar
- 2.2 Spara ändringar till förvaret
- 2.3 Visa historiken
- 2.4 Ångra saker
- 2.5 Jobba med fjärrförvar
- 2.6 Taggning
- 2.7 Git alias
- 2.8 Sammanfattning
-
3. Git förgreningar
- 3.1 Grenar i ett nötskal
- 3.2 Grundläggande förgrening och sammanslagning
- 3.3 Hantera grenar
- 3.4 Arbetsflöde med grenar
- 3.5 Fjärrgrenar
- 3.6 Grenflytt
- 3.7 Sammanfattning
-
4. Git på servern
- 4.1 Protokollen
- 4.2 Skaffa Git på en server
- 4.3 Generera din publika SSH-nyckel
- 4.4 Konvigurera servern
- 4.5 Git Daemonen
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Alternativ tillhandahållna av tredje part
- 4.10 Sammanfattning
-
5. Distributed Git
- 5.1 Distributed Workflows
- 5.2 Contributing to a Project
- 5.3 Maintaining a Project
- 5.4 Summary
-
6. GitHub
-
7. Git Tools
- 7.1 Revision Selection
- 7.2 Interactive Staging
- 7.3 Stashing and Cleaning
- 7.4 Signing Your Work
- 7.5 Searching
- 7.6 Rewriting History
- 7.7 Reset Demystified
- 7.8 Advanced Merging
- 7.9 Rerere
- 7.10 Debugging with Git
- 7.11 Submodules
- 7.12 Bundling
- 7.13 Replace
- 7.14 Credential Storage
- 7.15 Summary
-
8. Customizing Git
- 8.1 Git Configuration
- 8.2 Git Attributes
- 8.3 Git Hooks
- 8.4 An Example Git-Enforced Policy
- 8.5 Summary
-
9. Git and Other Systems
- 9.1 Git as a Client
- 9.2 Migrating to Git
- 9.3 Summary
-
10. Git Internals
- 10.1 Plumbing and Porcelain
- 10.2 Git Objects
- 10.3 Git References
- 10.4 Packfiles
- 10.5 The Refspec
- 10.6 Transfer Protocols
- 10.7 Maintenance and Data Recovery
- 10.8 Environment Variables
- 10.9 Summary
-
A1. Bilaga A: Git in Other Environments
- A1.1 Graphical Interfaces
- A1.2 Git in Visual Studio
- A1.3 Git in Eclipse
- A1.4 Git in Bash
- A1.5 Git in Zsh
- A1.6 Git in PowerShell
- A1.7 Summary
-
A2. Bilaga B: Embedding Git in your Applications
- A2.1 Command-line Git
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
A3. Bilaga C: Git Commands
- A3.1 Setup and Config
- A3.2 Getting and Creating Projects
- A3.3 Basic Snapshotting
- A3.4 Branching and Merging
- A3.5 Sharing and Updating Projects
- A3.6 Inspection and Comparison
- A3.7 Debugging
- A3.8 Patching
- A3.9 Email
- A3.10 External Systems
- A3.11 Administration
- A3.12 Plumbing Commands
4.5 Git på servern - Git Daemonen
Git Daemonen
Nu skall vi konfigurera en daemon som tillhandahåller repon över “Git” protokollet. Det är vanligt för snabb icke-autentiserad åtkomst till din Gitdata. Kom ihåg att, eftersom detta inte är en autentiserad tjänst, kommer allt du skickar över protokollet att vara publikt inom dess nätverk.
Om du kör detta på en server utanför din brandvägg, skall det bara användas för projekt som är publikt synliga för hela världen. Om servern du kör på ligger innanför din brandvägg kan du använda den för projekt som ett stort antal människor eller datorer (integrations- eller byggservrar) bara har läsrättigheter till och du inte vill lägga till en separat SSH-nyckel för varje.
Oavsett vilket är Gitprotokollet relativt lätt att konfigurera. Du behöver i praktiken bara köra detta kommando som en daemonprocess:
$ git daemon --reuseaddr --base-path=/srv/git/ /srv/git/
Flaggan --reuseaddr
tillåter att servern startar om utan att vänta på att gamla anslutningar dör ut, medan flaggan --base-path
tillåter folk att klona projekt utan att specificera hela sökvägen. Sökvägen i slutet talar om för Gitdaemonen var den skall leta efter repon för att exportera.
Om du kör en brandvägg, kommer du behöva öppna upp port 9418 på den maskin du konfigurerar detta på.
Du kan daemonisera processen på olika sätt, beroende på ditt operativsystem.
Eftersom systemd
är det vanligatste init-systemet på moderna Linuxdistributioner kan du använda den för ändamålet.
Lägg helt enkelt en fil i /etc/systemd/system/git-daemon.service
med följande innehåll:
[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
Du kanske har noterat att Gitdaemonen startas med git
som både grupp och användare.
Modifiera dem för att passa dina behov och säkerställ att användaren och gruppen existerar på systemet.
Kontrollera också att Gitbinären är tillgänglig på /usr/bin/git
och ändra sökvägen om nödvändigt.
Slutligen behöver du köra systemctl enable git-daemon
för att automatiskt starta tjänsten vid uppstart, och starta och stoppa tjänsten med systemctl start git-daemon
respektive systemctl stop git-daemon
.
Upp till och med LTS 14.04, använde Ubuntu enhetskonfiguration av uppstartstjänster. Därför, på Ubuntu 14.04 och tidigare kan du använda ett uppstartsskript. Så därför, i följande fil
/etc/init/local-git-daemon.conf
lägger du följande skript:
start on startup
stop on shutdown
exec /usr/bin/git daemon \
--user=git --group=git \
--reuseaddr \
--base-path=/srv/git/ \
/srv/git/
respawn
Av säkerhetsskäl är det starkt rekommenderat att denna daemon körs som en användare med enbart läsrättigheter till dina repon — du kan lätt göra detta genom att skapa en ny användare git-ro och köra daemonen som den.
För enkelhets skull kommer vi köra den som samma git-användare som git-shell
kör som.
När du startar om din maskin kommer din Gitdaemon starta automatiskt och återstartas om den stoppas. För att starta den utan att behöva starta om kan du köra:
$ initctl start local-git-daemon
På andra system kanske du vill använda xinetd
, ett skript i ditt sysvinit
-system eller något annat — så länge som kommandot är daemoniserat och övervakas på något sätt.
Nu behöver du tala om för Git vilka repon som tillåts icke-autentiserad Gitserverbaserad åtkomst till.
Du kan göra detta för varje repo genom att skapa en fil som heter git-daemon-export-ok
.
$ cd /path/to/project.git
$ touch git-daemon-export-ok
Närvaron av den filen talar om för Git att det är OK att tillhandahålla det projektet utan autentisering.