Цель урока: Понять, что такое система контроля версий (VCS), почему git является стандартом в индустрии, и научиться выполнять базовые операции: создать свой первый репозиторий, отслеживать изменения в файлах, делать коммиты (сохранения) и просматривать историю изменений. Мы будем применять git для решения задачи системного администратора - ведения истории изменений конфигурационных файлов.

Часть 1: Теория. Проблема "file_v2_final_final.conf"

Представьте, что вы редактируете важный конфигурационный файл, например, /etc/nginx/nginx.conf.

  1. Вы вносите изменения. Все работает.

  2. Через неделю вы вносите еще одно "улучшение".

  3. Еще через месяц - третье. И вдруг все ломается.

  4. Вы пытаетесь вспомнить: "А что именно я поменял в прошлый раз, когда все еще работало?". Вы не помните.

Чтобы избежать этого, вы начинаете создавать копии: nginx.conf.baknginx.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-репозитории есть три основных состояния:

  1. Untracked (неотслеживаемый): git видит файл, но не следит за изменениями в нем.

  2. Staged (подготовленный к коммиту): Вы говорите git: "Я закончил работу над этим файлом, пожалуйста, включи его в мой следующий 'снимок'".

  3. Committed (закоммиченный): "Снимок" сделан, и изменения надежно сохранены в истории.

Шаг 4: Добавление первого файла и первый коммит

  1. Скопируем наш конфиг Nginx в репозиторий.

    Важно! Если вы проходите этот урок на чистой системе и ещё не устанавливали Nginx, установите его, иначе файла /etc/nginx/nginx.conf просто не будет. Установить командой: apt install -y nginx

    cp /etc/nginx/nginx.conf .
    # Точка в конце означает "в текущий каталог"
  2. Проверим статус. Команда git status - ваш лучший друг. Она всегда показывает текущее состояние.

    git status

    Результат:

    On branch master
    No commits yet
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
            nginx.conf

    git сообщает, что видит новый, неотслеживаемый файл.

  3. Добавим файл в "staging area" (подготовим к коммиту).

    # git add [имя_файла]
    git add nginx.conf
  4. Снова проверим статус.

    git status

    Результат:

    ...
    Changes to be committed:
      (use "git rm --cached <file>..." to unstage)
            new file:   nginx.conf

    Теперь файл находится в секции "Changes to be committed" - он готов к "фотографированию".

  5. Делаем "снимок" - коммит.
    Коммит - это акт сохранения. Каждый коммит должен сопровождаться осмысленным сообщением (ключ -m).

    git commit -m "Initial commit: Add nginx.conf"
    

    Результат:

    [master (root-commit) abc1234] Initial commit: Add nginx.conf

    git сообщает, что создал новый коммит с уникальным идентификатором abc1234 и вашим сообщением.

  6. Финальная проверка статуса.
    git status

  7. Результат:
    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

авторское право цифровые решения

Помог ли вам данный ответ? 0 Пользователи считают это полезным (0 голосов)