-
1. Početak
- 1.1 O kontroli verzije
- 1.2 Kratka istorija Gita
- 1.3 Osnove Gita
- 1.4 Komandna linija
- 1.5 Instaliranje Gita
- 1.6 Podešavanja za prvi put
- 1.7 Traženje pomoći
- 1.8 Rezime
-
2. Osnove Gita
- 2.1 Pravljenje Git repozitorijuma
- 2.2 Snimanje promena na repozitorijumu
- 2.3 Pregled istorije komitova
- 2.4 Opovrgavanje
- 2.5 Rad sa udaljenim repozitorijumima
- 2.6 Tagovanje
- 2.7 Alijasi
- 2.8 Rezime
-
3. Grananje u Gitu
- 3.1 Grananje ukratko
- 3.2 Osnove grananja i spajanja
- 3.3 Upravljanje granama
- 3.4 Tokovi rada sa grananjem
- 3.5 Udaljene grane
- 3.6 Rebaziranje
- 3.7 Rezime
-
4. Git on the Server
- 4.1 Protokoli
- 4.2 Postavljanje Gita na server
- 4.3 Generisanje javnog SSH ključa
- 4.4 Podešavanje servera
- 4.5 Git Daemon
- 4.6 Pametan HTTP
- 4.7 GitWeb
- 4.8 Opcije za hostovanje koje nude treća lica
- 4.9 Rezime
-
5. Distribuirani Git
- 5.1 Distribuirani tokovi rada
- 5.2 Kako doprineti projektu
- 5.3 Održavanje projekta
- 5.4 Rezime
-
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. Prilagođavanje Gita
- 8.1 Konfiguracija Gita
- 8.2 Git atributi
- 8.3 Git hukovi
- 8.4 Primer polise sprovedene od strane Gita
- 8.5 Rezime
-
9. Git i ostali sistemi
- 9.1 Git kao klijent
- 9.2 Migriranje na Git
- 9.3 Rezime
-
10. Git iznutra
- 10.1 Vodovod i porcelan
- 10.2 Git objekti
- 10.3 Git reference
- 10.4 Paketoteke
- 10.5 Refspek
- 10.6 Transfer Protocols
- 10.7 Maintenance and Data Recovery
- 10.8 Environment Variables
- 10.9 Summary
-
A1. Appendix 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. Appendix B: Embedding Git in your Applications
- A2.1 Command-line Git
- A2.2 Libgit2
- A2.3 JGit
-
A3. Appendix 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 on the Server - Podešavanje servera
Podešavanje servera
Prođimo kroz podešavanje SSH pristupa na serverskoj strani.
U ovom primeru, koristićete authorized_keys
metodu za autentifikaciju svojih korisnika.
Pretpostavljamo i da imate standardnu Linuks distribuciju kao što je Ubuntu.
Prvo, kreirate korisnika git
i .ssh
direktorijum za tog korisnika.
$ sudo adduser git
$ su git
$ cd
$ mkdir .ssh && chmod 700 .ssh
$ touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
Zatim dodate neke javne SSH ključeve developera u datoteku authorized_kezy
za korisnika git
.
Pretpostavimo da imate neke javne ključeve kojima verujete i da ste ih sačuvaji u privremenim datotekama.
Opet, javni ključevi izgledaju nekako ovako.
$ cat /tmp/id_rsa.john.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCB007n/ww+ouN4gSLKssMxXnBOvf9LGt4L
ojG6rs6hPB09j9R/T17/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK+4k
Yjh6541NYsnEAZuXz0jTTyAUfrtU3Z5E003C4oxOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9Ez
Sdfd8AcCIicTDWbqLAcU4UpkaX8KyGlLwsNuuGztobF8m72ALC/nLF6JLtPofwFBlgc+myiv
O7TCUSBdLQlgMVOFq1I2uPWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPq
dAv8JggJICUvax2T9va5 gsg-keypair
Samo ih dodajte na datoteku authorized_keys
korisnika git
u njegovom direktorijumu .ssh
:
$ 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
Sada možete da podesite prazan repozitorijum za njega pokretanjem komande git init
uz opciju --bare
, što će inicijalizovati repozitorijum ne praveći pritom radni direktorijum:
$ cd /opt/git
$ mkdir project.git
$ cd project.git
$ git init --bare
Initialized empty Git repository in /opt/git/project.git/
Onda, Džom, Džozi i Džesika mogu da gurnu prvu verziju svog projekta na taj repozitorijum tako što će ga dodati kao udaljeni repozitorijum i gurnuti granu.
Obratite pažnju na to da neko mora da iskoristi šel da dopre do mašine i napravi goli repozitorijum svaki put kada dodajete novi projekat.
Koristićemo gitserver
kao ime hosta servera na kome su podešeni korisnik git
i repozitorijum.
Ako ste ga podigli interno, i ako imate DNS za gitserver
koji pokazuje na taj server, možete da koristite komande na uobičajen način (pod pretpostavkom da je myproject
postojeći projekat sa datotekama u njemu):
# on John's computer
$ cd myproject
$ git init
$ git add .
$ git commit -m 'initial commit'
$ git remote add origin git@gitserver:/opt/git/project.git
$ git push origin master
Sada drugi mogu da kloniraju i guraju promene podjednako lako.
$ git clone git@gitserver:/opt/git/project.git
$ cd project
$ vim README
$ git commit -am 'fix for the README file'
$ git push origin master
Ovom metodom možete brzo da dobijete Git server sa dozvolom čitanja i upisa za nekoliko developera.
Treba da obratite pažnju na to da trenutno svi korisnici takođe mogu da se uloguju na server i uđu u šel kao korisnik git
.
Ako želite da ograničite to, moraćete da promenite šel u nešto drugo u datoteci passwd
.
Lako možete ograničiti korisnika git
da može raditi samo Git aktivnosti koristeći ograničeni šel alat koji se naziva git-shell
koji dolazi uz Git.
Ako podesite ovo kao login šel korisnika git
, korisnik git
neće imati klasičan pristup šelu na serveru.
Da biste iskoristili ovo, treba da podesite git-shell
umesto bash
ili csh
za korisnikov login šel.
To možete učiniti tako što ćete prvo dodati git-shell
u /etc/shells
ako već nije tamo.
$ cat /etc/shells # see if `git-shell` is already in there. If not...
$ which git-shell # make sure git-shell is installed on your system.
$ sudo vim /etc/shells # and add the path to git-shell from last command
Sada možete izmeniti šel za korisnika pomoću komande chsh <username>
:
$ sudo chsh git # and enter the path to git-shell, usually: /usr/bin/git-shell
Korisnik git
sada može da koristi SSH konekciju da gura i dovlači Git repozitorijume, ali nema pristup mašini preko klasičnog šela.
Ako proba, videće poruku sličnu ovom:
$ 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.
Sada će Gitove mrežne komande i dalje raditi kako se očekuje, ali korisnici neće moći da pristupe šelu.
Kako izlaz nalaže, možete i da podesite i direktorijum u početnom direktorijumu korisnika git
malom izmenom komande git-shell
.
Na primer, možete ograničiti Git komande koje će server prihvatiti ili možete izmeniti poruku koju korisici vide kada pokušaju da se povežu preko SSH-a na taj način.
Pokrenite git help shell
za piše informacija o izmenama koje možete načiniti u šelu.