-
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.4 Git på servern - Konvigurera servern
Konvigurera servern
Låt oss gå ingeom hur man konfigurerar SSH-åtkomst på serversidan.
I detta exemplet kommer du använda metoden med authorized_keys
för att autentisera dina användare.
Vi antar också att du använder en vanlig Linuxdistribution som till exempel Ubuntu.
Notera
|
Mycket av det som beskrivs här kan automatiseras genom att använda kommandot |
Först skapar du ett användarkonto som heter git
och en .ssh
-katalog för den användaren.
$ sudo adduser git
$ su git
$ cd
$ mkdir .ssh && chmod 700 .ssh
$ touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
Därefter behöver du lägga till några utvecklares publika SSH-nycklar till filen authorized_keys
för git
-användaren.
Antag att du har några betrodda publika nycklar och har sparat dem i temporära filer.
Återigen, de publika nycklarna ser ut ungefär såhär:
$ cat /tmp/id_rsa.john.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCB007n/ww+ouN4gSLKssMxXnBOvf9LGt4L
ojG6rs6hPB09j9R/T17/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK+4k
Yjh6541NYsnEAZuXz0jTTyAUfrtU3Z5E003C4oxOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9Ez
Sdfd8AcCIicTDWbqLAcU4UpkaX8KyGlLwsNuuGztobF8m72ALC/nLF6JLtPofwFBlgc+myiv
O7TCUSBdLQlgMVOFq1I2uPWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPq
dAv8JggJICUvax2T9va5 gsg-keypair
Du bara lägger till dem i git
-användarens authorized_keys
-fil som finns i .ssh
-katalogen:
$ cat /tmp/id_rsa.john.pub >> ~/.ssh/authorized_keys
$ cat /tmp/id_rsa.josie.pub >> ~/.ssh/authorized_keys
$ cat /tmp/id_rsa.jessica.pub >> ~/.ssh/authorized_keys
Nu kan du konfigurera ett tomt repo för dem genom att köra git init
med --bare
flaggan, vilket initialiserar repot utan arbetskatalog:
$ cd /srv/git
$ mkdir project.git
$ cd project.git
$ git init --bare
Initialized empty Git repository in /srv/git/project.git/
Sedan kan John, Josie eller Jessica skicka upp första versionen av deras projekt in i det repot genom att lägga till det som ett fjärrepo och skicka upp en gren.
Notera att någon måste logga in på maskinen via skalet och skapa ett bart remo varje gång du vill lägga till ett projekt.
Låt oss använda gitserver
som värdnamnet på server på vilken du konfigurerat git
-användaren och repot.
Om du kör det internt och sätter upp en DNS för gitserver
till att peka på den servern så kan du använda kommandona nästan rakt av (under antagandet att myproject
är ett existerande projekt med filer i):
# on John's computer
$ cd myproject
$ git init
$ git add .
$ git commit -m 'initial commit'
$ git remote add origin git@gitserver:/srv/git/project.git
$ git push origin master
Nu kan andra klona ner det och skicka ändringar tillbaks precis lika lätt:
$ git clone git@gitserver:/srv/git/project.git
$ cd project
$ vim README
$ git commit -am 'fix for the README file'
$ git push origin master
Med denna metoden kan du snabbt få upp en läs- och skrivbar Gitserver för en handfull utvecklare.
Man bör också notera att alla dessa användare även kan logga in på servern och köra ett skal som git
-användaren.
Om du vill begränsa det måste du ändra skalet till något annat i filen /etc/passwd
.
Du kan enkelt begränsa git
-användarkontot till bara Git-relaterade aktiviteter med ett begränsat skalverktyg som heter git-shell
som kommer med Git.
Om du sätter detta som git
-användarens inloggningsskal, kan användaren inte har normal skalåtkomst till din server.
För att använda detta, specificera git-shell
istället för bash eller csh för det användarkontots inloggningsskal.
För att göra det måste du först lägga till den fullständiga sökvägen till git-shell
i /etc/shells
om det inte redan står där:
$ cat /etc/shells # se om `git-shell` redan finns där. Om inte
$ which git-shell # säkerställ att git-shell är installerat på ditt system.
$ sudo -e /etc/shells # Och lägg till sökvägen till git-shell från föregående kommando
Nu kan du ändra skalet för en användare genom att använda chsh <användarnamn> -s <skal>
:
$ sudo chsh git -s $(which git-shell)
Nu kan git
-användaren bara använda SSH-anslutningen för att skicka och hämta Gitrepon och kan inte använda skalet på din maskin.
Om du försöker kommer du se ett meddelande om förhindrad inloggning som detta:
$ ssh git@gitserver
fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.
Connection to gitserver closed.
Nu kommer Gits nätverkskommandon fungera precis som vanligt, men användare kan inte få ett skal.
Precis som meddelandet gör gällande kan du också konfigrera en katalog i git
-användarens hemkatalog för att skräddarsy git-shell
kommandot lite grann.
Till exempel kan du begränsa Gitkommandon som servern accepterar eller så kan du skräddarsy meddelandet som användare ser om de försöker logga in över SSH.
Kör git help shell
för mer information om att skräddarsy skalet.