Git — это распределённая система контроля версий, которая лежит в основе современной разработки программного обеспечения. Нужно ли вам отслеживать изменения в своих проектах, работать в команде или участвовать в open-source проектах — Git предоставляет инструменты для эффективного управления историей кода.
💡 Если вы разрабатываете код, работаете в команде или просто хотите отслеживать изменения в своих конфигурациях — Git даст вам полный контроль над историей ваших файлов.
В этом руководстве мы установим Git на Rocky Linux 8, 9 и 10. Вы узнаете:
- Как установить Git через DNF (простой способ)
- Как собрать последнюю версию Git из исходников (для самых свежих функций)
- Как настроить Git с вашим именем и email
- Как создать репозиторий и работать с удалёнными серверами
- Как обновлять и удалять Git
Для кого: разработчики (контроль версий кода), сисадмины (отслеживание изменений конфигов), DevOps (автоматизация развёртывания), новички (первые шаги в контроле версий).
1. Выбор метода установки
Rocky Linux предлагает два подхода к установке Git: через DNF (просто) или сборку из исходников (для самой свежей версии).
| Метод | Канал | Версия | Обновления | Для кого |
|---|---|---|---|---|
| DNF (AppStream) | Стандартный репозиторий Rocky | 2.43 (Rocky 8) – 2.47 (Rocky 9/10) | Автоматические через dnf upgrade | Большинство пользователей, нужны стабильные пакеты |
| Сборка из исходников | GitHub | Последняя стабильная (2.52.0) | Требуется ручная перекомпиляция | Разработчики, которым нужны новейшие функции |
💡 Вывод для новичка: Для большинства пользователей подходит установка через DNF — она даёт автоматические обновления безопасности и интеграцию с системным менеджером пакетов. Сборка из исходников нужна только если вам требуются функции, отсутствующие в версии из репозитория.
2. Подготовка системы
2.1 Обновление системы
sudo dnf upgrade --refresh -y
Что делает:
sudo— права суперпользователя.dnf upgrade— обновляет все пакеты до последних версий.--refresh— принудительно перекачивает метаданные репозиториев (игнорирует кэш).-y— автоматически отвечает «yes».
Зачем: Это стандартная практика безопасности перед установкой нового ПО. Снижает риск конфликтов зависимостей.
2.2 Установка dnf-plugins-core (для метода сборки из исходников)
sudo dnf install -y dnf-plugins-core
Что делает: Устанавливает набор плагинов для DNF, включая команду config-manager.
Зачем: Понадобится для управления репозиториями при сборке из исходников (хотя в этой инструкции мы не используем сторонние репозитории).
3. Метод 1: Установка Git через DNF (рекомендовано)
3.1 Проверка, установлен ли Git
git --version
Если Git уже установлен — вы увидите версию. Если нет — команда сообщит command not found.
3.2 Установка Git
sudo dnf install -y git
Что делает: Устанавливает пакет Git из стандартного репозитория Rocky Linux AppStream.
3.3 Проверка версии
git --version
✅ Ожидаемый вывод для Rocky 10/9:
git version 2.47.3
✅ Ожидаемый вывод для Rocky 8:
git version 2.43.7
Зачем: Убедиться, что Git установился корректно. Версии отличаются, но основные команды одинаковы.
4. Метод 2: Сборка Git из исходников (последняя версия)
Этот метод сложнее, но даёт доступ к самой свежей версии Git (например, 2.52.0) с новейшими функциями.
4.1 Установка зависимостей для сборки
sudo dnf groupinstall -y "Development Tools"
sudo dnf install -y libcurl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker wget
Что делает:
groupinstall "Development Tools"— устанавливает компиляторы (gcc, make) и утилиты сборки.- Остальные пакеты — библиотеки для HTTPS-транспорта, парсинга XML, локализации и Perl-инструментов.
Опционально (для GUI-инструментов gitk и git-gui):
sudo dnf install -y tcl tk
4.2 Скачивание исходного кода
curl -s https://api.github.com/repos/git/git/tags | grep -oE '"name": "v[0-9]+\.[0-9]+\.[0-9]+"' | head -n 1 | cut -d '"' -f4 | xargs -I{} wget https://github.com/git/git/archive/refs/tags/{}.tar.gz
Что делает: Обращается к API GitHub, находит последний стабильный тег (например, v2.52.0) и скачивает архив с исходниками.
💡 Если API недоступен — скачайте вручную с страницы тегов Git:
wget https://github.com/git/git/archive/refs/tags/v2.52.0.tar.gz
4.3 Распаковка
tar -xzf v*.tar.gz
cd git-*/
4.4 Компиляция и установка
make prefix=/usr/local all
sudo make prefix=/usr/local install
Что делает:
make prefix=/usr/local all— компилирует Git с установкой в/usr/local.sudo make prefix=/usr/local install— устанавливает скомпилированные файлы в систему.
Сколько ждать: Несколько минут, в зависимости от производительности сервера.
4.5 Проверка установки
git --version
✅ Ожидаемый вывод:
git version 2.52.0
Проверка, что используется именно собранная версия:
command -v git
✅ Ожидаемый вывод:
/usr/local/bin/git
Если показывает /usr/bin/git — добавьте /usr/local/bin в начало PATH:
echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
4.6 Очистка файлов сборки (опционально)
cd ~
rm -rf git-*/ v*.tar.gz
5. Настройка Git
После установки Git необходимо настроить ваше имя и email — они будут вшиты в каждый коммит.
5.1 Установка имени и email
git config --global user.name "Ваше Имя"
git config --global user.email "your.email@example.com"
Что делает: Сохраняет ваше имя и email в глобальном конфигурационном файле ~/.gitconfig.
5.2 Проверка конфигурации
git config --list
✅ Ожидаемый вывод:
user.name=Ваше Имя
user.email=your.email@example.com
5.3 Настройка кэширования учётных данных
При работе с удалёнными репозиториями по HTTPS Git будет запрашивать пароль (или токен) при каждом подключении. Кэширование позволяет сохранять его на несколько часов.
git config --global credential.helper 'cache --timeout=14400'
Что делает: Сохраняет учётные данные на 4 часа (14400 секунд). После этого срока Git запросит их снова.
5.4 (Опционально) Установка имени ветки по умолчанию
Современные репозитории используют main вместо master.
git config --global init.defaultBranch main
6. Основы работы с Git
6.1 Создание нового репозитория
mkdir ~/my-project
cd ~/my-project
git init
✅ Ожидаемый вывод:
hint: Using 'main' as the name for the initial branch...
Initialized empty Git repository in /home/user/my-project/.git/
6.2 Проверка статуса
git status
6.3 Добавление файлов и коммит
echo "# My Project" > README.md
git add README.md
git commit -m "Initial commit"
6.4 Подключение удалённого репозитория (GitHub, GitLab, Bitbucket)
git remote add origin https://github.com/username/repository.git
Проверка:
git remote -v
6.5 Отправка изменений
git push -u origin main
7. Обновление Git
7.1 Для DNF-установки
sudo dnf upgrade --refresh git
7.2 Для сборки из исходников
Используйте скрипт автоматического обновления:
Создание скрипта:
sudo nano /usr/local/bin/update-git
Содержимое скрипта:
#!/bin/bash
set -e
INSTALL_PREFIX="/usr/local"
BUILD_DIR="$HOME/git-build"
if [ "$(id -u)" -eq 0 ]; then
echo "Run this script as a regular user; use sudo only for install steps."
exit 1
fi
for cmd in curl tar make gcc; do
if ! command -v "$cmd" >/dev/null 2>&1; then
echo "Error: $cmd is required but not installed."
exit 1
fi
done
mkdir -p "$BUILD_DIR"
CURRENT_VERSION=$($INSTALL_PREFIX/bin/git --version 2>/dev/null | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -n 1 || echo "none")
CURRENT_TAG="v$CURRENT_VERSION"
LATEST_TAG=$(curl -s https://api.github.com/repos/git/git/tags | grep -oE '"name": "v[0-9]+\.[0-9]+\.[0-9]+"' | head -n 1 | cut -d '"' -f4)
if [ -z "$LATEST_TAG" ]; then
echo "Error: Could not fetch the latest version from GitHub."
exit 1
fi
echo "Current version: $CURRENT_TAG"
echo "Latest version: $LATEST_TAG"
if [ "$CURRENT_TAG" = "$LATEST_TAG" ]; then
echo "Already up to date."
exit 0
fi
cd "$BUILD_DIR"
rm -rf git-*/
echo "Downloading $LATEST_TAG..."
curl -fLO --progress-bar "https://github.com/git/git/archive/refs/tags/${LATEST_TAG}.tar.gz"
echo "Extracting source..."
tar -xzf "${LATEST_TAG}.tar.gz"
rm -f "${LATEST_TAG}.tar.gz"
cd "git-${LATEST_TAG#v}"
echo "Compiling (this can take several minutes)..."
make prefix="$INSTALL_PREFIX" all
echo "Installing..."
sudo make prefix="$INSTALL_PREFIX" install
NEW_VERSION=$($INSTALL_PREFIX/bin/git --version | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -n 1)
echo "Update complete. git version $NEW_VERSION"
Делаем скрипт исполняемым:
sudo chmod +x /usr/local/bin/update-git
Запуск обновления:
update-git
⚠️ Важно: Не автоматизируйте этот скрипт через cron. Компиляция может занимать время и требовать ручного вмешательства.
8. Удаление Git
8.1 Удаление DNF-установки
sudo dnf remove git -y
sudo dnf autoremove -y
8.2 Удаление сборки из исходников
sudo rm -f /usr/local/bin/git /usr/local/bin/git-* /usr/local/bin/gitk /usr/local/bin/scalar
sudo rm -rf /usr/local/libexec/git-core
sudo rm -rf /usr/local/share/git-core
sudo rm -rf /usr/local/share/git-gui
sudo rm -rf /usr/local/share/gitk
sudo rm -rf /usr/local/share/gitweb
sudo rm -rf /usr/local/share/perl5/Git /usr/local/share/perl5/Git.pm
sudo rm -rf /usr/local/share/man/man1/git* /usr/local/share/man/man5/git* /usr/local/share/man/man7/git*
sudo rm -f /usr/local/bin/update-git
8.3 Проверка удаления
git --version
✅ Ожидаемый вывод:
bash: git: command not found
9. Диагностика проблем
9.1 После сборки из исходников показывает старую версию
Причина: Система находит Git из /usr/bin раньше, чем из /usr/local/bin.
Решение:
echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
command -v git # должно показывать /usr/local/bin/git
9.2 Ошибка «Permission denied (publickey)» при push
Причина: SSH-ключ не добавлен в аккаунт GitHub/GitLab.
Проверка:
ssh -T git@github.com
Решение: Сгенерируйте ключ и добавьте публичный ключ в ваш аккаунт:
ssh-keygen -t ed25519 -C "your.email@example.com"
cat ~/.ssh/id_ed25519.pub
9.3 Ошибка компиляции «cmp: command not found»
Решение:
sudo dnf install diffutils
Чек-лист: всё готово к работе
# 1. Проверка версии Git
git --version
# 2. Проверка конфигурации
git config --list
# 3. Проверка, какой Git используется (для сборки из исходников)
command -v git
# 4. Проверка подключения к GitHub (для SSH)
ssh -T git@github.com
# 5. Создание тестового репозитория
mkdir ~/test-git && cd ~/test-git && git init && echo "test" > file.txt && git add file.txt && git commit -m "test"
Заключение
Вы установили Git на Rocky Linux и настроили его для повседневной работы.
Что теперь есть в системе:
- ✅ Git (стабильная версия из DNF или последняя из исходников)
- ✅ Настроенное имя и email для коммитов
- ✅ Кэширование учётных данных для HTTPS
- ✅ Готовность к работе с удалёнными репозиториями
Что дальше:
- Создайте репозиторий на GitHub/GitLab и свяжите его с локальным
- Изучите основные команды:
git log,git branch,git merge,git rebase - Настройте Git в своей IDE (VS Code, IntelliJ, PyCharm)
- Для продвинутой работы изучите Git Flow или GitHub Flow