-
1. Вступ
- 1.1 Про систему контролю версій
- 1.2 Коротка історія Git
- 1.3 Основи Git
- 1.4 Git, зазвичай, тільки додає дані
- 1.5 Три стани
- 1.6 Командний рядок
- 1.7 Інсталяція Git
- 1.8 Початкове налаштування Git
- 1.9 Отримання допомоги
- 1.10 Підсумок
-
2. Основи Git
- 2.1 Створення Git-репозиторія
- 2.2 Запис змін до репозиторія
- 2.3 Перегляд історії комітів
- 2.4 Скасування речей
- 2.5 Взаємодія з віддаленими сховищами
- 2.6 Теґування
- 2.7 Псевдоніми Git
- 2.8 Підсумок
-
3. Галуження в git
- 3.1 Гілки у кількох словах
- 3.2 Основи галуження та зливання
- 3.3 Управління гілками
- 3.4 Процеси роботи з гілками
- 3.5 Віддалені гілки
- 3.6 Перебазовування
- 3.7 Підсумок
-
4. Git на сервері
- 4.1 Протоколи
- 4.2 Отримання Git на сервері
- 4.3 Генерація вашого публічного ключа SSH
- 4.4 Налаштування Серверу
- 4.5 Демон Git
- 4.6 Розумний HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Варіанти стороннього хостингу
- 4.10 Підсумок
-
5. Розподілений Git
-
6. GitHub
-
7. Інструменти Git
- 7.1 Вибір ревізій
- 7.2 Інтерактивне індексування
- 7.3 Ховання та чищення
- 7.4 Підписання праці
- 7.5 Пошук
- 7.6 Переписування історії
- 7.7 Усвідомлення скидання (reset)
- 7.8 Складне злиття
- 7.9 Rerere
- 7.10 Зневадження з Git
- 7.11 Підмодулі
- 7.12 Пакування
- 7.13 Заміна
- 7.14 Збереження посвідчення (credential)
- 7.15 Підсумок
-
8. Налаштування Git
-
9. Git and Other Systems
- 9.1 Git як клієнт
- 9.2 Міграція на Git
- 9.3 Підсумок
-
10. Git зсередини
- 10.1 Кухонні та парадні команди
- 10.2 Об’єкти Git
- 10.3 Посилання Git
- 10.4 Файли пакунки
- 10.5 Специфікація посилань (refspec)
- 10.6 Протоколи передачі
- 10.7 Супроводження та відновлення даних
- 10.8 Змінні середовища
- 10.9 Підсумок
-
A1. Додаток A: Git в інших середовищах
- A1.1 Графічні інтерфейси
- A1.2 Git у Visual Studio
- A1.3 Git в Eclipse
- A1.4 Git у Bash
- A1.5 Git у Zsh
- A1.6 Git у Powershell
- A1.7 Підсумок
-
A2. Додаток B: Вбудовування Git у ваші застосунки
- A2.1 Git з командного рядка
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
-
A3. Додаток C: Команди Git
- A3.1 Налаштування та конфігурація
- A3.2 Отримання та створення проектів
- A3.3 Базове збереження відбитків
- A3.4 Галуження та зливання
- A3.5 Поширення й оновлення проектів
- A3.6 Огляд та порівняння
- A3.7 Зневаджування
- A3.8 Латання (patching)
- A3.9 Електронна пошта
- A3.10 Зовнішні системи
- A3.11 Адміністрування
- A3.12 Кухонні команди
4.5 Git на сервері - Демон Git
Демон Git
Тепер встановимо демон, що надає доступ до сховищ за допомогою протоколу “Git”. Це поширений вибір для швидкого, неавторизовоного доступу до ваших даних Git. Пам’ятайте, що оскільки він не авторизований, все до чого ви надаєте доступ за допомогою цього протоколу стає загальнодоступним у його мережі.
Якщо сервер працює за межами вашого мережевого екрану, він має використовуватись виключно для проектів, що є загальнодоступними для світу. Якщо ж сервер працює в межах мережевого екрану, ви можете використовувати його для проектів, до яких велика кількість людей або комп’ютерів (наприклад сервери компіляції чи інтеграції) мають доступ тільки на читання, але ви не хочете додавати ключ SSH для кожного з них.
У будь-якому разі, протокол Git легко налаштувати. Вам просто треба виконати цю команду так, щоби вона працювала як демон:
$ git daemon --reuseaddr --base-path=/srv/git/ /srv/git/
Опція --reuseaddr
дозволяє серверу себе перезапускати без очікування, доки старі з’єднання спливуть (time out), а опція --base-path
дозволяє клонувати сховища за допомогою шляху відносно значення цієї опції замість повного шляху.
Якщо у вас працює мережевий екран, ви також маєте дозволити передачу через порт 9418 машини з Git сервером.
Запустити цю команду як демон можна декількома шляхами, в залежності від вашої операційної системи.
Найпоширенішою у сучасних дистрибутивах Linux системою запуску є systemd
, отже варто її використати для цього.
Просто створіть файл /etc/systemd/system/git-daemon.service
з таким вмістом:
[Unit]
Description=Start Git Daemon
[Service]
ExecStart=/usr/bin/git daemon --reuseaddr --base-path=/srv/git/ /srv/git/
Restart=always
RestartSec=500ms
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=git-daemon
User=git
Group=git
[Install]
WantedBy=multi-user.target
Можливо, ви помітили, що демон Git запускається під користувачем та групою git
.
Змініть це згідно ваших потреб. Але вказаний користувач має існувати у вашій системі.
Також зверніть увагу на шлях до програми Git — відредагуйте /usr/bin/git
, якщо є потреба.
Нарешті, треба виконати systemctl enable git-daemon
, щоб цей сервіс автоматично запускався під час запуску системи. Також ви можете запустити чи зупинити сервіс за допомогою systemctl start git-daemon
та systemctl stop git-daemon
відповідно.
Ubuntu до версії LTS 14.04 використовувала службу Upstart. Для її конфігурації, треба додати до файлу
/etc/init/local-git-daemon.conf
такий скрипт:
start on startup
stop on shutdown
exec /usr/bin/git daemon \
--user=git --group=git \
--reuseaddr \
--base-path=/srv/git/ \
/srv/git/
respawn
З причин безпеки, ми заохочуємо вас запускати цей демон тільки з користувача, що має доступ тільки на читання сховищ — це легко зробити, створивши нового користувача git-ro та запустивши демон з нього.
Для простоти ми просто запустимо його з нашого користувача git
, з якого працює і git-shell
.
Коли ви перезавантажите свою машину, демон Git автоматично запуститься та буде сам перезапускатися, якщо він впаде. Щоб запустити його без перезапуску, ви можете виконати:
$ initctl start local-git-daemon
На інших системах, ви можете використати xinetd
, скрипт у теці системи sysvinit
, чи щось інше — головне щоб команда запускалась як демон, та можна було перевіряти її статус.
Далі, вам треба сказати Git, до яких сховищ дозволяти неавторизований доступ за допомогою сервера Git.
Ви можете зробити це в кожному сховищі за допомогою створення файлу під назвою git-daemon-export-ok
.
$ cd /path/to/project.git
$ touch git-daemon-export-ok
Присутність цього файлу каже Git, що він може роздавати цей проект без авторизації.