-
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
-
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. Distribuerade Git
-
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.