Git — это распределённая система контроля версий, которая отслеживает изменения в коде, позволяет работать в команде, откатываться к предыдущим состояниям и управлять несколькими ветками одновременно. Git нужен практически каждому разработчику, независимо от языка программирования. В Debian Git можно установить из стандартных репозиториев (проще, но версия старее) или собрать из исходников (актуальная версия). Главные сложности для новичка: после установки нужно настроить имя и email (иначе Git не даст сделать коммит), а также, при сборке из исходников, правильно настроить PATH, чтобы не было конфликта с системной версией.
💡 В этом руководстве вы установите Git на Debian двумя способами: через APT (рекомендованный для большинства) и сборкой из исходников (если нужна самая свежая версия). Для source-сборки мы будем использовать официальный источник kernel.org с проверкой GPG-подписи, а также покажем альтернативный способ через GitHub API. Вы также узнаете, как настроить Git (имя, email, дефолтную ветку), основные команды и решить типичные проблемы.
В этой статье вы узнаете:
- Как установить Git через APT (рекомендовано)
- Как собрать Git из исходников (официальный источник kernel.org с проверкой GPG)
- Как собрать Git из исходников (альтернативный способ через GitHub API)
- Как настроить Git: имя, email, дефолтную ветку
main - Основные команды:
init,add,commit,push,pull - Как решить типичные проблемы: SSL-сертификаты, ошибки SSH, конфликт версий
Для кого: разработчики, системные администраторы, а также все, кому нужна система контроля версий на Debian 11, 12 или 13.
1. 🔧 Предварительные требования
Перед установкой убедитесь, что:
- У вас установлена Debian 11, 12 или 13
- Подключение к интернету стабильно
- У вас есть права sudo
⚠️ ВАЖНО: Проверьте права sudo перед установкой
Если вы не уверены, есть ли у вашего пользователя права администратора, выполните в терминале:
sudo whoami
Что делает: sudo выполняет команду от имени суперпользователя, whoami показывает имя текущего пользователя.
Зачем: Эта команда проверяет, есть ли у вас права sudo. Без них вы не сможете устанавливать пакеты.
✅ Если выводит root — всё в порядке, можете продолжать.
❌ Если выводит is not in the sudoers file — сначала пройдите наше руководство по настройке sudo.
1.1 Обновление системы
Перед установкой всегда обновляйте список пакетов:
sudo apt update && sudo apt upgrade -y
Что делает:
sudo— права суперпользователяapt update— обновляет список доступных пакетов из репозиториев&&— выполняет следующую команду только если предыдущая успешнаapt upgrade -y— обновляет все установленные пакеты до последних версий
Зачем: Это стандартная практика безопасности перед установкой нового ПО.
2. 📊 Сравнение способов установки Git
В Debian есть два основных способа установки Git. Вот их сравнение:
| Метод | Откуда | Версия | Обновления | Плюсы | Минусы |
|---|---|---|---|---|---|
| APT рекомендовано | Репозитории Debian | Debian 13: 2.47, Debian 12: 2.39, Debian 11: 2.30 | Автоматически через apt upgrade | Простота, безопасность, минимум усилий | Версия может быть старой, особенно на Debian 11 |
| Сборка из исходников | kernel.org (официальный) | Последняя стабильная | Вручную | Максимальная свежесть, проверка GPG-подписи | Требует установки инструментов сборки, ручное обновление |
💡 Рекомендация: Для большинства пользователей подойдёт APT. Сборку из исходников выбирайте, если вам нужна самая свежая версия Git или специфические опции компиляции.
3. 📦 Способ 1: Установка Git через APT (рекомендованный)
Этот способ подходит для большинства пользователей. Вы получаете стабильную версию, протестированную для вашего выпуска Debian.
3.1 Установка пакета
sudo apt install git -y
Что делает: Устанавливает Git из официальных репозиториев Debian.
3.2 Проверка версии и расположения
git --version
command -v git
✅ Ожидаемый вывод в терминале (Debian 13):
git version 2.47.3
/usr/bin/git
Какие версии в разных Debian:
| Версия Debian | Версия Git |
|---|---|
| Debian 13 (Trixie) | 2.47.x |
| Debian 12 (Bookworm) | 2.39.x |
| Debian 11 (Bullseye) | 2.30.x |
4. 🔧 Способ 2: Сборка Git из исходников (актуальная версия)
Этот способ подходит, если вам нужна самая свежая версия Git (с новыми функциями). Мы покажем два варианта: официальный (kernel.org) и альтернативный (GitHub API).
4.1 Установка инструментов сборки и зависимостей
sudo apt install build-essential libssl-dev zlib1g-dev libcurl4-gnutls-dev libexpat1-dev gettext curl wget ca-certificates xz-utils gpg -y
Что делает: Устанавливает компилятор, утилиты и библиотеки для поддержки SSL, сжатия, HTTP и других функций.
4.2 Вариант А (основной): Официальный источник kernel.org с проверкой GPG
Этот вариант использует официальный сайт kernel.org и проверяет подпись архива. Рекомендуется для производственных систем.
# Создаём рабочую директорию
mkdir -p ~/git-build
cd ~/git-build
# Определяем последнюю версию
GIT_VERSION=$(curl -fsSL https://www.kernel.org/pub/software/scm/git/ | grep -oE 'git-[0-9]+\.[0-9]+\.[0-9]+\.tar\.xz' | sed 's/git-//; s/\.tar\.xz//' | sort -V | tail -n 1)
echo "Последняя версия Git: $GIT_VERSION"
# Скачиваем архив и подпись
curl -fLO "https://www.kernel.org/pub/software/scm/git/git-${GIT_VERSION}.tar.xz"
curl -fLO "https://www.kernel.org/pub/software/scm/git/git-${GIT_VERSION}.tar.sign"
# Распаковываем .tar из .xz
xz -dkf "git-${GIT_VERSION}.tar.xz"
# Проверяем подпись (требуется предварительно импортировать ключи разработчиков Git)
# Если вы не импортировали ключи, эта команда выдаст предупреждение, но не прервёт сборку
gpg --verify "git-${GIT_VERSION}.tar.sign" "git-${GIT_VERSION}.tar" 2>/dev/null || echo "Предупреждение: проверка GPG-подписи не выполнена (ключ не импортирован)"
# Распаковываем и собираем
tar -xf "git-${GIT_VERSION}.tar.xz"
cd "git-${GIT_VERSION}"
make prefix="/opt/git-${GIT_VERSION}" all
sudo make prefix="/opt/git-${GIT_VERSION}" install
# Создаём симлинк в /usr/local/bin
sudo ln -sfn "/opt/git-${GIT_VERSION}/bin/git" /usr/local/bin/git
hash -r
# Проверяем
command -v git
git --version
💡 Примечание про GPG: Для полной проверки подписи импортируйте публичные ключи разработчиков Git с официального сайта. Если ключи не импортированы, сборка продолжится с предупреждением — архив всё равно проверяется на целостность через SHA256 (косвенно, через подпись).
Где взять ключ, если не знаете:
# Импортировать ключи разработчиков Git можно командой:
# gpg --locate-keys git@kernel.org
4.3 Вариант Б (альтернативный): Использование GitHub API
Этот вариант может быть полезен, если kernel.org недоступен или для быстрой установки в тестовой среде.
# Создаём рабочую директорию
mkdir -p ~/git-build
cd ~/git-build
# Определяем последнюю версию через GitHub API
LATEST_TAG=$(curl -s https://api.github.com/repos/git/git/tags | grep -oP '"name": "v\K[0-9]+\.[0-9]+\.[0-9]+' | head -1)
echo "Последняя версия Git: $LATEST_TAG"
# Скачиваем архив
wget "https://github.com/git/git/archive/refs/tags/v${LATEST_TAG}.tar.gz"
tar -xzf "v${LATEST_TAG}.tar.gz"
cd "git-${LATEST_TAG}"
# Собираем и устанавливаем в версионированную директорию
make prefix="/opt/git-${LATEST_TAG}" all
sudo make prefix="/opt/git-${LATEST_TAG}" install
# Создаём симлинк в /usr/local/bin
sudo ln -sfn "/opt/git-${LATEST_TAG}/bin/git" /usr/local/bin/git
hash -r
# Проверяем
command -v git
git --version
4.4 Версионированная установка: почему это важно
Установка в /opt/git-ВЕРСИЯ (а не прямо в /usr/local) позволяет:
- Легко откатиться к предыдущей версии
- Удалить конкретную версию без риска повредить другие программы
- Понимать, какая версия Git у вас установлена, просто посмотрев на директорию
4.5 Проверка установки
command -v git
git --version
✅ Ожидаемый вывод: /usr/local/bin/git и версия (например, git version 2.54.0).
4.6 Создание скрипта для обновления source-сборки
Скрипт автоматически определяет последнюю версию с kernel.org, проверяет подпись, собирает и устанавливает новую версию рядом со старой, затем обновляет симлинк.
mkdir -p ~/git-build
cat > ~/git-build/update-git.sh << 'EOF'
#!/bin/bash
set -euo pipefail
INSTALL_BASE="/opt"
LINK_PATH="/usr/local/bin/git"
BUILD_DIR="$HOME/git-build"
# Проверка необходимых инструментов
for cmd in curl gpg make tar xz; do
if ! command -v $cmd &> /dev/null; then
echo "Ошибка: $cmd не установлен."
exit 1
fi
done
# Определение последней версии с kernel.org
GIT_VERSION=$(curl -fsSL https://www.kernel.org/pub/software/scm/git/ | grep -oE 'git-[0-9]+\.[0-9]+\.[0-9]+\.tar\.xz' | sed 's/git-//; s/\.tar\.xz//' | sort -V | tail -n 1)
if [ -z "$GIT_VERSION" ]; then
echo "Ошибка: не удалось определить последнюю версию Git."
exit 1
fi
# Определение текущей версии из симлинка
if [ -L "$LINK_PATH" ]; then
CURRENT_VERSION=$(readlink -f "$LINK_PATH" | grep -oP 'git-\K[0-9]+\.[0-9]+\.[0-9]+' || echo "none")
else
CURRENT_VERSION="none"
fi
echo "Текущая версия: $CURRENT_VERSION"
echo "Последняя версия: $GIT_VERSION"
if [ "$CURRENT_VERSION" = "$GIT_VERSION" ]; then
echo "Git уже последней версии."
exit 0
fi
cd "$BUILD_DIR"
# Скачивание архива и подписи
curl -fLO "https://www.kernel.org/pub/software/scm/git/git-${GIT_VERSION}.tar.xz"
curl -fLO "https://www.kernel.org/pub/software/scm/git/git-${GIT_VERSION}.tar.sign"
xz -dkf "git-${GIT_VERSION}.tar.xz"
# Проверка подписи (опционально)
gpg --verify "git-${GIT_VERSION}.tar.sign" "git-${GIT_VERSION}.tar" 2>/dev/null || echo "Предупреждение: проверка GPG-подписи не выполнена"
# Распаковка и сборка
tar -xf "git-${GIT_VERSION}.tar.xz"
cd "git-${GIT_VERSION}"
make prefix="${INSTALL_BASE}/git-${GIT_VERSION}" all
sudo make prefix="${INSTALL_BASE}/git-${GIT_VERSION}" install
# Обновление симлинка
sudo ln -sfn "${INSTALL_BASE}/git-${GIT_VERSION}/bin/git" "$LINK_PATH"
hash -r
echo "Обновление завершено!"
git --version
EOF
chmod +x ~/git-build/update-git.sh
Запуск обновления:
~/git-build/update-git.sh
Если текущая версия совпадает с последней, скрипт ничего не делает:
Текущая версия: 2.54.0
Последняя версия: 2.54.0
Git уже последней версии.
5. ⚙️ Настройка Git (обязательно!)
После установки Git нужно настроить ваше имя и email — они будут привязаны к каждому коммиту.
5.1 Установка имени и email
git config --global user.name "Ваше Имя"
git config --global user.email "your.email@example.com"
Что делает: Сохраняет настройки в файл ~/.gitconfig.
5.2 Установка дефолтного имени ветки (рекомендуется)
git config --global init.defaultBranch main
Что делает: Новые репозитории будут создаваться с веткой main вместо master.
5.3 Кэширование паролей для HTTPS-репозиториев
git config --global credential.helper "cache --timeout=18000"
Что делает: Сохраняет пароль в памяти на 5 часов (18000 секунд). Полезно, если вы работаете с HTTPS-репозиториями и не хотите вводить пароль каждый раз.
5.4 Проверка настроек
git config --list
6. 📝 Основные команды Git
| Команда | Что делает |
|---|---|
git init | Создаёт новый репозиторий в текущей папке |
git status | Показывает статус файлов (изменённые, новые, удалённые) |
git add файл | Добавляет файл в индекс (staging area) |
git add . | Добавляет все изменения в текущей папке |
git commit -m "сообщение" | Создаёт коммит |
git log | Показывает историю коммитов |
git remote add origin URL | Добавляет удалённый репозиторий |
git push -u origin main | Отправляет коммиты в удалённый репозиторий |
git pull origin main | Загружает изменения из удалённого репозитория |
7. ⚠️ Решение типичных проблем
7.1 Ошибка: SSL certificate problem
Симптом: git push или git clone выдаёт ошибку:
fatal: unable to access 'https://github.com/...': SSL certificate problem: unable to get local issuer certificate
Причина: Проблемы с сертификатами CA.
Решение: Переустановите пакет ca-certificates:
sudo apt install --reinstall ca-certificates -y
7.2 Ошибка: Permission denied (publickey)
Симптом: При попытке git push по SSH появляется:
git@github.com: Permission denied (publickey).
Причина: SSH-ключ не настроен или не добавлен в аккаунт GitHub/GitLab.
Решение: Сгенерируйте ключ и добавьте его в аккаунт.
ssh-keygen -t ed25519 -C "your.email@example.com"
cat ~/.ssh/id_ed25519.pub
Затем скопируйте вывод и добавьте в настройках GitHub (SSH and GPG keys).
Проверка:
ssh -T git@github.com
7.3 Конфликт версий: после source-сборки показывает старый Git
Симптом: Вы собрали Git из исходников, но git --version показывает старую версию (из APT).
Причина: Ваш shell находит бинарный файл в /usr/bin (APT-версия) раньше, чем в /usr/local/bin (source-сборка).
Пошаговое решение:
Шаг 1: Проверьте, какой бинарный файл используется:
command -v git
Шаг 2: Если выводит /usr/bin/git, измените порядок PATH:
export PATH=/usr/local/bin:$PATH
echo 'export PATH=/usr/local/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
Шаг 3: Проверьте снова:
command -v git
✅ Ожидаемый вывод: /usr/local/bin/git
7.4 Ошибка: Git не даёт сделать коммит (user.name и user.email не настроены)
Симптом: git commit выдаёт:
Author identity unknown
*** Please tell me who you are.
Решение: Настройте имя и email (раздел 5.1).
8. ❌ Удаление Git
Удаление APT-версии
sudo apt remove --purge git -y
sudo apt autoremove -y
Удаление source-сборки
# Удаляем симлинк
sudo rm -f /usr/local/bin/git
# Удаляем все версионированные установки
sudo rm -rf /opt/git-*
# Удаляем скрипт и рабочую директорию
rm -rf ~/git-build
Удаление конфигурации
rm -rf ~/.gitconfig ~/.git-credentials
Проверка удаления
command -v git
✅ Ожидаемый вывод: Пустая строка.
9. 📝 Чек-лист: всё готово к работе
- [ ] Система обновлена (
sudo apt update && sudo apt upgrade -y) - [ ] Выбран и выполнен один из способов установки (APT / Source)
- [ ]
git --versionпоказывает ожидаемую версию - [ ]
command -v gitпоказывает правильный путь (/usr/bin/gitдля APT,/usr/local/bin/gitдля Source) - [ ] Настроены имя и email (
git config --list) - [ ]
git initсоздаёт репозиторий без ошибок - Настроено кэширование паролей для HTTPS
- [ ] (Для source-сборки) Скрипт обновления работает (
~/git-build/update-git.sh)
Заключение
Вы установили Git на Debian. Если вы выбрали APT — получили стабильную, проверенную версию, которая будет обновляться вместе с системой. Если собрали из исходников — получили самую свежую версию с официального сайта kernel.org, с проверкой GPG-подписи и версионированной установкой в /opt/git-ВЕРСИЯ, которую можно обновлять скриптом из раздела 4.6. Главное, что нужно запомнить: после установки обязательно настройте имя и email, иначе Git не даст создавать коммиты. Для работы с удалёнными репозиториями (GitHub, GitLab) используйте SSH-ключи. Для HTTPS-репозиториев настройте кэширование паролей, чтобы не вводить их каждый раз.
Что дальше:
- Изучите официальную документацию Git
- Настройте SSH-ключи для работы с GitHub
- Изучите работу с ветками:
git branch,git merge,git rebase - Настройте Git для работы с несколькими удалёнными репозиториями
- Рассмотрите графический интерфейс GitHub Desktop или
gitk
Связанные статьи: