
Цель урока: Понять, что такое система контроля версий (VCS), почему git является стандартом в индустрии, и научиться выполнять базовые операции: создать свой первый репозиторий, отслеживать изменения в файлах, делать коммиты (сохранения) и просматривать историю изменений. Мы будем применять git для решения задачи системного администратора - ведения истории изменений конфигурационных файлов.
Часть 1: Теория. Проблема "file_v2_final_final.conf"
Представьте, что вы редактируете важный конфигурационный файл, например, /etc/nginx/nginx.conf.
-
Вы вносите изменения. Все работает.
-
Через неделю вы вносите еще одно "улучшение".
-
Еще через месяц - третье. И вдруг все ломается.
-
Вы пытаетесь вспомнить: "А что именно я поменял в прошлый раз, когда все еще работало?". Вы не помните.
Чтобы избежать этого, вы начинаете создавать копии: nginx.conf.bak, nginx.conf.before_proxy_settings и т.д. Ваша папка превращается в хаос, и разобраться, какая версия является правильной, становится невозможно.
Система контроля версий (VCS) решает эту проблему.
git - это самая популярная в мире распределенная VCS.
Аналогия: git - это как "машина времени" для вашей папки с файлами.
-
Он не хранит десятки полных копий ваших файлов.
-
Он отслеживает изменения (дельты) между версиями.
-
Он позволяет вам делать "снимки состояния" (коммиты) в любой момент времени.
-
Каждый "снимок" сопровождается осмысленным комментарием: "Добавил прокси для API", "Изменил порт на 8080".
-
В любой момент вы можете посмотреть всю историю "снимков", сравнить их между собой и "откатиться" к любому из них.
Почему это необходимо администратору?
-
Безопасное редактирование конфигов: Вы можете смело экспериментировать с настройками. Если что-то пошло не так, вы одной командой вернетесь к работающей версии.
-
История и аудит: Вы всегда знаете, кто, когда и зачем внес то или иное изменение.
-
Совместная работа: git позволяет нескольким людям одновременно работать над одними и теми же файлами, а затем "сливать" свои изменения.
Часть 2: Практика. Установка и первоначальная настройка
Шаг 1: Установка git
apt update
apt install -y git
Шаг 2: Первоначальная настройка
git должен знать, кто вы, чтобы подписывать ваши "снимки" (коммиты). Эти настройки делаются один раз.
# Укажите ваше имя
git config --global user.name "Your Name"
# Укажите ваш e-mail
git config --global user.email "youremail@example.com"
Часть 3: Практика. Ваш первый репозиторий
"Репозиторий" - это каталог, который находится под контролем git.
Шаг 1: Создание рабочего каталога
Давайте создадим специальный каталог, где мы будем хранить копии наших важных конфигов под версионным контролем.
# Создаем каталог
mkdir ~/etc_configs
# Переходим в него
cd ~/etc_configs
Шаг 2: Инициализация репозитория
Сейчас это просто обычная папка. Превратим ее в git-репозиторий.
git init
Результат: Initialized empty Git repository in /root/etc_configs/.git/

Эта команда создала в нашей папке скрытый подкаталог .git. Именно в нем git будет хранить всю свою "магию": историю, версии, настройки. Никогда не удаляйте и не редактируйте файлы в этой папке вручную!
Шаг 3: Жизненный цикл файла в git
У любого файла в git-репозитории есть три основных состояния:
-
Untracked (неотслеживаемый): git видит файл, но не следит за изменениями в нем.
-
Staged (подготовленный к коммиту): Вы говорите git: "Я закончил работу над этим файлом, пожалуйста, включи его в мой следующий 'снимок'".
-
Committed (закоммиченный): "Снимок" сделан, и изменения надежно сохранены в истории.
Шаг 4: Добавление первого файла и первый коммит
-
Скопируем наш конфиг Nginx в репозиторий.
Важно! Если вы проходите этот урок на чистой системе и ещё не устанавливали Nginx, установите его, иначе файла
/etc/nginx/nginx.confпросто не будет. Установить командой:apt install -y nginxcp /etc/nginx/nginx.conf . # Точка в конце означает "в текущий каталог" -
Проверим статус. Команда git status - ваш лучший друг. Она всегда показывает текущее состояние.
git statusРезультат:
On branch master No commits yet Untracked files: (use "git add <file>..." to include in what will be committed) nginx.confgit сообщает, что видит новый, неотслеживаемый файл.
-
Добавим файл в "staging area" (подготовим к коммиту).
# git add [имя_файла] git add nginx.conf -
Снова проверим статус.
git statusРезультат:
... Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: nginx.confТеперь файл находится в секции "Changes to be committed" - он готов к "фотографированию".
-
Делаем "снимок" - коммит.
Коммит - это акт сохранения. Каждый коммит должен сопровождаться осмысленным сообщением (ключ -m).git commit -m "Initial commit: Add nginx.conf"Результат:[master (root-commit) abc1234] Initial commit: Add nginx.confgit сообщает, что создал новый коммит с уникальным идентификатором abc1234 и вашим сообщением. -
Финальная проверка статуса.
git status -
Результат:
On branch master
nothing to commit, working tree clean
Это означает, что все изменения сохранены, и текущее состояние файлов полностью соответствует последнему "снимку".
Часть 4: Практика. Отслеживание изменений
Теперь давайте внесем изменение и посмотрим, как git его отследит.
Шаг 1: Редактируем файл
nano nginx.conf
Найдите строку worker_processes auto; и измените ее на worker_processes 1;. Сохраните и выйдите.
Шаг 2: Проверяем статус
git status
Результат:
...
Changes not staged for commit:(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: nginx.conf
git немедленно увидел, что файл был изменен (`modified`)
Шаг 3: Просматриваем изменения
Как узнать, что именно поменялось? Используем `git diff`.
git diff
Результат (покажет разницу):
--- a/nginx.conf
+++ b/nginx.conf
@@ -1,5 +1,5 @@
user www-data;
-worker_processes auto;
+worker_processes 1;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
-
- (минус) - удаленная строка.
-
+ (плюс) - добавленная строка.
Шаг 4: Коммитим второе изменение
Повторяем уже знакомый цикл: add -> commit.
git add nginx.conf
git commit -m "Set worker_processes to 1"
Часть 5: Просмотр истории
Как посмотреть все наши "снимки"? Команда git log.
git log
Результат:
commit xyz7890... (HEAD -> master)
Author: Your Name <youremail@example.com>
Date: Thu Aug 22 14:00:00 2025 +0000
Set worker_processes to 1
commit abc1234...
Author: Your Name <youremail@example.com>
Date: Thu Aug 22 13:50:00 2025 +0000
Initial commit: Add nginx.conf
Вы видите всю историю: кто, когда и с каким комментарием внес изменения. Чтобы выйти из log, нажмите q.
Часть 6: Заключение
Сегодня мы сделали первый и самый важный шаг в мир контроля версий. Это фундаментальный навык, который повышает вашу профессиональную ценность. Вы научились:
-
Понимать, какую проблему решает git - проблему хаоса версий.
-
Настраивать git и инициализировать свой первый локальный репозиторий.
-
Проводить файлы через их жизненный цикл:
git add(подготовить) иgit commit -m "..."(сохранить). -
Использовать главные команды для ориентирования:
git status(что сейчас происходит?) иgit log(что было раньше?). -
Просматривать конкретные изменения с помощью
git diff.
Теперь вы можете безопасно хранить и отслеживать изменения в ваших самых важных конфигурационных файлах и скриптах.
На следующем, 56-м уроке, мы познакомимся с Ansible. Это инструмент для автоматизации управления конфигурациями, который позволит нам описывать желаемое состояние сервера в простых файлах и применять его к одному или сотне серверов одновременно.
Перейти к просмотру - УРОК №56.
Промо-код: PROMO15 - скидка 15%!
Введите при оформлении первого заказа на сайте: Hosting-VDS.com

