-
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
- 3.1 Czym jest gałąź
- 3.2 Podstawy rozgałęziania i scalania
- 3.3 Zarządzanie gałęziami
- 3.4 Branching Workflows
- 3.5 Gałęzie zdalne
- 3.6 Zmiana bazy
- 3.7 Podsumowanie
-
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. Distributed Git
- 5.1 Distributed Workflows
- 5.2 Contributing to a Project
- 5.3 Maintaining a Project
- 5.4 Summary
-
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. 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.5 Git na serwerze - Git Daemon
Git Daemon
Teraz skonfigurujemy demona obsługującego repozytoria poprzez protokół "Git". Jest to najczęstszy wybór dla szybkiego, nieuwierzytelnionego dostępu do danych Git. Pamiętaj, że ponieważ nie jest to usługa uwierzytelniona, wszystko co udostępniasz przez ten protokół jest publiczne w obrębie jego sieci.
Jeśli używasz projektu na serwerze poza firewallem, powinieneś stosować ten protokół jedynie do projektów, które są publicznie widoczne dla świata. Jeśli serwer, którego używasz znajduje się wewnątrz sieci z firewallem, możesz również użyć go do projektów używanych przez wiele ludzi i komputerów (ciągła integracja lub budowa serwera) mających dostęp tylko do odczytu, jeśli nie chcesz dodawać klucza SSH dla każdego.
W każdym bądź razie, protokół Git jest stosunkowo prosty w konfiguracji. Po prostu, musisz uruchomić komendę poprzez demona:
$ git daemon --reuseaddr --base-path=/opt/git/ /opt/git/
--reuseaddr
pozwala serwerowi na restart bez konieczności czekania na zakończenie starych połączeń, natomiast opcja --base-path
pozwala ludziom na klonowanie bez konieczności podawania całej ścieżki, a ścieżka na końcu mówi Git demonowi, które repozytorium mają zostać eksportowane. Jeśli używasz firewalla, będziesz musiał dodać regułę otwarcia portu 9418 w oknie ustawień swojego firewalla.
Możesz zdemonizować ten proces na wiele sposobów, w zależności od używanego systemu. Na maszynie z Ubuntu możesz użyć skryptu Upstart. W poniższym pliku:
/etc/event.d/local-git-daemon
zamieszczasz ten skrypt:
start on startup
stop on shutdown
exec /usr/bin/git daemon \
--user=git --group=git \
--reuseaddr \
--base-path=/opt/git/ \
/opt/git/
respawn
Ze względów bezpieczeństwa, zaleca się do korzystania z demona jako użytkownik z uprawnieniami tylko do odczytu dla danego repozytorium – możesz łatwo to zrobić tworząc nowego użytkownika git-ro
i uruchamiając demona jako ten użytkownik. Dla uproszczenia będziemy używać tego samego użytkownika git
, jako który działa git-shell
.
Kiedy zrestartujesz maszynę, Twój Git demon wystartuje automatycznie jeśli był wyłączony. Aby uruchomić go bez restartu, możesz użyć polecenia:
$ initctl start local-git-daemon
Na innych systemach, możesz użyć xinetd
, skryptu w folderze systemowym sysvinit
, lub inaczej – tak długo jak będziesz demonizował to polecenie i obserwował jakoś.
Następnie musisz powiedzieć Gitowi, do których repozytoriów pozwolić na nieuwierzytelniony dostęp oparty na serwerze Git.
Możesz to zrobić w każdym repozytorium poprzez utworzenie pliku o nazwie git-daemon-export-ok
.
$ cd /path/to/project.git
$ touch git-daemon-export-ok
Obecność tego pliku mówi Gitowi, że można udostępniać ten projekt bez uwierzytelniania.