-
1. Pierwsze kroki
- 1.1 Wprowadzenie do kontroli wersji
- 1.2 Krótka historia Git
- 1.3 Podstawy Git
- 1.4 Linia poleceÅ
- 1.5 Instalacja Git
- 1.6 WstÄpna konfiguracja Git
- 1.7 Uzyskiwanie pomocy
- 1.8 Podsumowanie
-
2. Podstawy Gita
- 2.1 Pierwsze repozytorium Gita
- 2.2 Rejestrowanie zmian w repozytorium
- 2.3 PodglÄ d historii rewizji
- 2.4 Cofanie zmian
- 2.5 Praca ze zdalnym repozytorium
- 2.6 Tagowanie
- 2.7 Aliasy
- 2.8 Podsumowanie
-
3. GaÅÄzie Gita
-
4. Git na serwerze
- 4.1 ProtokoÅy
- 4.2 Uruchomienie Git na serwerze
- 4.3 Generowanie Twojego publicznego klucza SSH
- 4.4 Konfigurowanie serwera
- 4.5 Git Daemon
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Inne opcje hostowania przez podmioty zewnÄtrzne
- 4.10 Podsumowanie
-
5. Rozproszony Git
-
6. GitHub
-
7. NarzÄdzia Gita
- 7.1 Wskazywanie rewizji
- 7.2 Interaktywne używanie przechowali
- 7.3 Schowek i czyszczenie
- 7.4 Signing Your Work
- 7.5 Searching
- 7.6 Przepisywanie historii
- 7.7 Reset Demystified
- 7.8 Advanced Merging
- 7.9 Rerere
- 7.10 Debugowanie z Gitem
- 7.11 ModuÅy zależne
- 7.12 Bundling
- 7.13 Replace
- 7.14 Credential Storage
- 7.15 Podsumowanie
-
8. Dostosowywanie Gita
- 8.1 Konfiguracja Gita
- 8.2 Git Attributes
- 8.3 Git Hooks
- 8.4 An Example Git-Enforced Policy
- 8.5 Summary
-
9. Git i inne systemy
- 9.1 Git jako klient
- 9.2 Migracja do Gita
- 9.3 Podsumowanie
-
10. Mechanizmy wewnÄtrzne w Git
- 10.1 Komendy typu plumbing i porcelain
- 10.2 Obiekty Gita
- 10.3 Referencje w Git
- 10.4 Spakowane pliki (packfiles)
- 10.5 Refspec
- 10.6 ProtokoÅy transferu
- 10.7 Konserwacja i odzyskiwanie danych
- 10.8 Environment Variables
- 10.9 Podsumowanie
-
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 na serwerze - Konfigurowanie serwera
Konfigurowanie serwera
Spróbujmy przeÅledziÄ proces ustawienia dostÄpu SSH po stronie serwera.
Aby tego dokonaÄ, użyjesz metody wykorzystujÄ
cej authorized_keys
do uwierzytelnienia Twoich użytkowników.
ZakÅadamy również, że pracujesz na standardowej dystrybucji linuksowej (np. Ubuntu).
Pierwszym krokiem bÄdzie utworzenie użytkownika git
i lokalizacji .ssh
dla tegoż użytkownika.
$ sudo adduser git
$ su git
$ cd
$ mkdir .ssh && chmod 700 .ssh
$ touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
NastÄpnie potrzebujesz dodaÄ klucz SSH programisty do pliku authorized_keys
dla tego użytkownika.
ZaÅóżmy ze otrzymaÅeÅ kilka kluczy mailem i zapisaÅeÅ je w pliku tymczasowym.
Klucze publiczne wyglÄ
daÄ bÄdÄ
podobnie do tego:
$ cat /tmp/id_rsa.john.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCB007n/ww+ouN4gSLKssMxXnBOvf9LGt4L
ojG6rs6hPB09j9R/T17/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK+4k
Yjh6541NYsnEAZuXz0jTTyAUfrtU3Z5E003C4oxOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9Ez
Sdfd8AcCIicTDWbqLAcU4UpkaX8KyGlLwsNuuGztobF8m72ALC/nLF6JLtPofwFBlgc+myiv
O7TCUSBdLQlgMVOFq1I2uPWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPq
dAv8JggJICUvax2T9va5 gsg-keypair
Po prostu dopisujesz je do pliku authorized_keys
użytkownika git
, który znajduje siÄ w katalogu .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
Od tego momentu możesz ustawiÄ puste repozytorium poprzez komendÄ git init
z opcjÄ
--bare
, która zainicjuje repozytorium bez Åcieżki roboczej:
$ cd /opt/git
$ mkdir project.git
$ cd project.git
$ git init --bare
Initialized empty Git repository in /opt/git/project.git/
Teraz John, Josie lub Jessica ma możliwoÅÄ wykonania wypchniÄcia pierwszej wersji projektu do repozytorium poprzez dodanie go jako zdalny (remote) oraz wysÅanie caÅej gaÅÄzi projektu.
Aby tego dokonaÄ należy poÅÄ
czyÄ siÄ poprzez powÅokÄ z maszynÄ
i utworzyÄ nowe repozytorium za każdym razem kiedy chcemy dodaÄ projekt.
Użyjmy gitserver
jako nazwÄ serwera, na którym ustawisz użytkownika git
oraz repozytorium.
Jeżeli odpalasz je lokalnie i ustawiasz DNS jako gitserver
do poÅÄ
czenia z tym serwerem, wtedy bÄdziesz mógÅ użyÄ poniższych komend:
# na komputerze Johna
$ 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
W tym momencie użytkownicy mogÄ klonowaÄ projekt i wysyÅaÄ zmiany w prosty sposób:
$ git clone git@gitserver:/opt/git/project.git
$ cd project
$ vim README
$ git commit -am 'fix for the README file'
$ git push origin master
UżywajÄ c powyższej metody możesz Åatwo utworzyÄ serwer Git (odczyt/zapis) dla niewielkiej grupy użytkowników.
PowinieneÅ pamiÄtaÄ, że w tym momencie wszyscy dodani użytkownicy mogÄ
również zalogowaÄ siÄ na serwer i uzyskaÄ dostÄp do powÅoki jako użytkownik git
. JeÅli chcesz to ograniczyÄ, bÄdziesz musiaÅ zmieniÄ w pliku passwd
powÅokÄ na coÅ innego.
Jako dodatkowy Årodek ostrożnoÅci możesz zastrzec dostÄp do komend dla danego użytkownika git
poprzez narzÄdzie git-shell
, które dostÄpne jest wraz z Git.
Jeżeli ustawisz je jako powÅokÄ po zalogowaniu Twojego użytkownika git
, to użytkownik ten nie bÄdzie miaÅ peÅnego dostÄpu do Twojego serwera.
Aby tego użyÄ, podaj git-shell
zamiast bash
lub csh
jako powÅokÄ po zalogowaniu Twojego użytkownika.
Aby to zrobiÄ, musisz najpierw dodaÄ git-shell
do /etc/shells
(o ile jeszcze go tam nie ma):
$ cat /etc/shells # sprawdÅŗ czy `git-shell` już tam jest. JeÅli nie...
$ which git-shell # upewnij siÄ, że git-shell jest zainstalowane na serwerze
$ sudo vim /etc/shells # oraz dodaj ÅcieżkÄ do git-shell uzyskanÄ
z poprzedniego polecenia
Teraz możesz edytowaÄ powÅokÄ dla użytkownika używajÄ
c chsh <nazwa_użytkownika>
:
$ sudo chsh git # oraz podaj ÅcieżkÄ do git-shell, zwykle jest to: /usr/bin/git-shell
Teraz użytkownik git
może użyÄ poÅÄ
czenia SSH tylko do wysÅania i odebrania repozytorium Git, nie możne natomiast uzyskaÄ dostÄpu do powÅoki serwera.
Serwer odpowie odmowÄ
zalogowania, podobnÄ
do poniższej:
$ 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.
Teraz komendy sieciowe Git nadal bÄdÄ
dziaÅaÄ poprawnie, ale użytkownicy nie bÄdÄ
w stanie uzyskaÄ dostÄpu do powÅoki.
Jak możemy wyczytaÄ z wyjÅciowego komunikatu, możesz również ustawiÄ katalog w katalogu domowym użytkownika git
, który dostosowuje nieco komendÄ git-shell
.
Na przykÅad, możesz ograniczyÄ komendy Git, które serwer bÄdzie akceptowaÅ, lub możesz dostosowaÄ komunikat, który użytkownicy zobaczÄ
, jeÅli spróbujÄ
siÄ zalogowaÄ w ten sposób.
Uruchom git help shell
aby uzyskaÄ wiÄcej informacji na temat dostosowywania powÅoki.