-
1. Začetek
- 1.1 O nadzoru različic
- 1.2 Kratka zgodovina Gita
- 1.3 Kaj je Git?
- 1.4 Ukazna vrstica
- 1.5 Namestitev Gita
- 1.6 Prva nastavitev Gita
- 1.7 Pridobivanje pomoči
- 1.8 Povzetek
-
2. Osnove Git
- 2.1 Pridobivanje repozitorija Git
- 2.2 Snemanje sprememb v repozitorij
- 2.3 Pregled zgodovine potrditev
- 2.4 Razveljavljanje stvari
- 2.5 Delo z daljavami
- 2.6 Označevanje
- 2.7 Aliasi Git
- 2.8 Povzetek
-
3. Veje Git
- 3.1 Veje na kratko
- 3.2 Osnove vej in združevanja
- 3.3 Upravljanje vej
- 3.4 Poteki dela z vejami
- 3.5 Oddaljene veje
- 3.6 Ponovno baziranje
- 3.7 Povzetek
-
4. Git na strežniku
- 4.1 Protokoli
- 4.2 Pridobitev Gita na strežniku
- 4.3 Generiranje vaših javnih ključev SSH
- 4.4 Nastavitev strežnika
- 4.5 Prikriti proces Git
- 4.6 Pametni HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Možnosti gostovanja pri tretjih ponudnikih
- 4.10 Povzetek
-
5. Porazdeljeni Git
- 5.1 Porazdeljeni poteki dela
- 5.2 Prispevek k projektu
- 5.3 Vzdrževanje projekta
- 5.4 Povzetek
-
6. GitHub
-
7. Orodja Git
- 7.1 Izbira revizije
- 7.2 Interaktivno pripravljanje
- 7.3 Shranjevanje na varno (angl. stashing) in čiščenje
- 7.4 Podpisovanje vašega dela
- 7.5 Iskanje
- 7.6 Prepisovanje zgodovine
- 7.7 Demistifikacija ponastavitve
- 7.8 Napredno združevanje
- 7.9 Rerere
- 7.10 Razhroščevanje z Gitom
- 7.11 Podmoduli
- 7.12 Povezovanje v pakete
- 7.13 Zamenjava
- 7.14 Shramba poverilnic
- 7.15 Povzetek
-
8. Prilagoditev Gita
- 8.1 Konfiguracija Git
- 8.2 Atributi Git
- 8.3 Kljuke Git
- 8.4 Primer pravilnika, ki ga uveljavlja Git
- 8.5 Povzetek
-
9. Git in ostali sistemi
- 9.1 Git kot odjemalec
- 9.2 Migracija na Git
- 9.3 Povzetek
-
10. Notranjost Gita
- 10.1 Napeljava in keramika
- 10.2 Objekti Git
- 10.3 Reference Git
- 10.4 Packfiles (datoteke zmanjšanih podatkov)
- 10.5 Refspec
- 10.6 Protokoli prenosa
- 10.7 Vzdrževanje in obnovitev podatkov
- 10.8 Spremenljivke okolja
- 10.9 Povzetek
-
A1. Dodatek A: Git v drugih okoljih
- A1.1 Grafični vmesniki
- A1.2 Git v Visual Studio
- A1.3 Git v Visual Studio Code
- A1.4 Git v IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine
- A1.5 Git v Sublime Text
- A1.6 Git v Bashu
- A1.7 Git v Zsh
- A1.8 Git v Powershellu
- A1.9 Povzetek
-
A2. Dodatek B: Vdelava Gita v vašo aplikacijo
- A2.1 Git v ukazni vrstici
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
A3. Dodatek C: Ukazi Git
- A3.1 Nastavitev in konfiguracija
- A3.2 Pridobivanje in ustvarjanje projektov
- A3.3 Osnove posnetkov
- A3.4 Veje in združevanje
- A3.5 Deljenje in posodabljanje projektov
- A3.6 Pregled in primerjava
- A3.7 Razhroščevanje
- A3.8 Popravljanje
- A3.9 E-pošta
- A3.10 Zunanji sistemi
- A3.11 Administracija
- A3.12 Orodja za sisteme napeljave
4.4 Git na strežniku - Nastavitev strežnika
Nastavitev strežnika
Pojdimo skozi nastavitve dostopa SSH na strežniški strani.
V tem primeru boste za overjanje vaših uporabnikov uporabili metodo authorized_keys
.
Predpostavimo tudi, da poganjate standardno distribucijo Linuxa, kot je Ubuntu.
Opomba
|
Večino tega, kar je tu opisano, se lahko avtomatizira z uporabo ukaza |
Najprej ustvarite uporabnika git
in direktorij .ssh
za tega uporabnika.
$ sudo adduser git
$ su git
$ cd
$ mkdir .ssh && chmod 700 .ssh
$ touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
Naslednje morate za uporabnika git
dodati nekaj razvijalskih javnih ključev SSH v datoteko authorized_keys
.
Predpostavimo, da imate nekaj zaupljivih javnih ključev, ki ste jih shranili v začasne datoteke.
Javni ključi so videti nekako takole:
$ 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 pripnete jih k datoteki authorized_keys
uporabnika git
v njegovem direktoriju .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
Sedaj lahko zanje nastavite prazen repozitorij s pogonom git init
z možnostjo --bare
, ki inicializira repozitorij brez delovnega direktorija:
$ cd /srv/git
$ mkdir project.git
$ cd project.git
$ git init --bare
Initialized empty Git repository in /srv/git/project.git/
Nato lahko John, Josie, ali Jessica potisnejo prvo različico njihovega projekta v ta repozitorij, da ga dodajo kot daljavo in potisnejo vejo.
Opomniti velja, da se mora nekdo prijaviti preko lupine v napravo in ustvariti goli repozitorij vsakič, ko želite dodati projekt.
Uporabimo gitserver
kot ime gostitelja strežnika, na katerem ste nastavili vašega uporabnika git
in repozitorij.
Če ga poganjate interno in ste za gitserver
nastavili DNS, da kaže na ta strežnik, potem lahko uporabite ukaze, kakršni so sami po sebi (ob predpostavki, da je myproject
obstoječi projekt z datotekami v njem):
# 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
Na tej točki lahko drugi klonirajo in potiskajo spremembe nazaj prav tako enostavno:
$ git clone git@gitserver:/srv/git/project.git
$ cd project
$ vim README
$ git commit -am 'Fix for README file'
$ git push origin master
S to metodo lahko za mnoge razvijalce hitro dobite bralno/pisalni strežnik Git v pogonu.
Opomniti je treba, da se trenutno lahko vsi ti uporabniki tudi prijavijo v strežnik in dobijo lupino kot uporabnik git
.
Če želite to omejiti, boste morali spremeniti lupino na nekaj drugega v datoteki /etc/passwd
.
Enostavno lahko omejite uporabnika git
, da dela samo dejavnosti povezane z Gitom z omejenim orodjem lupine imenovanim git-shell
, ki prihaja z Gitom.
Če ste to nastavili kot prijavno lupino uporabnika git
, potem uporabnik git
ne more imeti običajnega dostopa lupine na vaš strežnik.
Da to uporabite, določite git-shell
namesto bash
ali csh
za prijavno lupino tega uporabnika.
Da to naredite, morate najprej dodati polno pot do git-shell
v /etc/shells
, če še ni tam:
$ 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 -e /etc/shells # and add the path to git-shell from last command
Sedaj lahko urejate lupino za uporabnika z uporabo chsh <username> -s <shell>
:
$ sudo chsh git -s $(which git-shell)
Sedaj lahko uporabnik git
uporablja samo povezave SSH, da potisne in povleče repozitorije Git, ne more se pa prijaviti preko lupine v napravo.
Če poskusite, boste videli naslednjo zavrnitev prijave:
$ 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.
Na tej točki bodo uporabniki še vedno lahko uporabljali posredovanje vrat SSH (angl. SSH port forwarding), da dostopajo do kateregakoli gostitelja, ki ga strežnik Git lahko doseže.
Če želite to preprečiti, lahko uredite datoteko authorized_keys
in dodate predpone sledečim možnostim za vsak ključ, ki ga želite omejiti:
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty
Rezultat bi moral biti videti nekako takole:
$ cat ~/.ssh/authorized_keys
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQCB007n/ww+ouN4gSLKssMxXnBOvf9LGt4LojG6rs6h
PB09j9R/T17/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK+4kYjh6541N
YsnEAZuXz0jTTyAUfrtU3Z5E003C4oxOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9EzSdfd8AcC
IicTDWbqLAcU4UpkaX8KyGlLwsNuuGztobF8m72ALC/nLF6JLtPofwFBlgc+myivO7TCUSBd
LQlgMVOFq1I2uPWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPqdAv8JggJ
ICUvax2T9va5 gsg-keypair
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQDEwENNMomTboYI+LJieaAY16qiXiH3wuvENhBG...
Sedaj bodo omrežni ukazi Git še vedno delovali popolnoma v redu, vendar uporabniki ne bodo dobili lupine.
Kot navaja izpis, lahko nastavite tudi direktorij v domačem direktoriju uporabnika git
, ki malenkost prilagaja ukaz git-shell
.
Na primer, omejite lahko ukaze Git, ki jih bo strežnik sprejemal, lahko pa tudi prilagodite sporočilo, ki ga uporabniki vidijo, če se poskusijo tako prijaviti preko SSH.
Poženite git help shell
za več informacij o prilagoditvi lupine.