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