Установка Git на Debian 13, 12, 11: подробное руководство

Git — это распределённая система контроля версий, которая отслеживает изменения в коде, позволяет работать в команде, откатываться к предыдущим состояниям и управлять несколькими ветками одновременно. Git нужен практически каждому разработчику, независимо от языка программирования. В Debian Git можно установить из стандартных репозиториев (проще, но версия старее) или собрать из исходников (актуальная версия). Главные сложности для новичка: после установки нужно настроить имя и email (иначе Git не даст сделать коммит), а также, при сборке из исходников, правильно настроить PATH, чтобы не было конфликта с системной версией.

💡 В этом руководстве вы установите Git на Debian двумя способами: через APT (рекомендованный для большинства) и сборкой из исходников (если нужна самая свежая версия). Вы также узнаете, как настроить Git (имя, email, дефолтную ветку), основные команды и решить типичные проблемы.

В этой статье вы узнаете:

  • Как установить Git через APT (рекомендовано)
  • Как собрать Git из исходников (актуальная версия)
  • Как настроить 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
Сборка из
исходников
GitHubПоследняя
стабильная
(2.52+)
ВручнуюМаксимальная
свежесть
Требует
установки
инструментов
сборки,
ручное
обновление

💡 Рекомендация: Для большинства пользователей подойдёт APT. Сборку из исходников выбирайте, если вам нужна самая свежая версия Git или специфические опции компиляции.

3. 📦 Способ 1: Установка Git через APT (рекомендованный)

Этот способ подходит для большинства пользователей. Вы получаете стабильную версию, протестированную для вашего выпуска Debian.

3.1 Установка пакета

sudo apt install git -y

Что делает: Устанавливает Git из официальных репозиториев Debian.

3.2 Проверка версии

git --version

Ожидаемый вывод в терминале (Debian 13):

git version 2.47.3

Какие версии в разных 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 (с новыми функциями).

4.1 Установка инструментов сборки и зависимостей

sudo apt install build-essential libssl-dev zlib1g-dev libcurl4-gnutls-dev libexpat1-dev gettext curl wget ca-certificates -y

Что делает: Устанавливает компилятор, утилиты и библиотеки для поддержки SSL, сжатия, HTTP и других функций.

4.2 Определение последней версии и скачивание исходников

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)
wget "https://github.com/git/git/archive/refs/tags/v${LATEST_TAG}.tar.gz"

Что делает: Запрашивает GitHub API для получения последнего тега версии Git, извлекает номер и скачивает архив.

4.3 Распаковка и конфигурация

tar -xvf v${LATEST_TAG}.tar.gz
cd git-*/
make prefix=/usr/local all

Что делает: Распаковывает архив, переходит в директорию с исходниками и компилирует Git (без установки).

4.4 Установка

sudo make prefix=/usr/local install

Что делает: Устанавливает собранный Git в /usr/local.

4.5 Проверка установки

git --version

Ожидаемый вывод: Более новая версия, чем в APT (например, git version 2.52.0).

4.6 Создание скрипта для обновления source-сборки

mkdir -p ~/git-build
cat > ~/git-build/update-git.sh << 'EOF'
#!/bin/bash
set -e

INSTALL_PREFIX="/usr/local"
BUILD_DIR="$HOME/git-build"

for cmd in curl wget make gcc tar; do
  if ! command -v $cmd &> /dev/null; then
    echo "Ошибка: $cmd не установлен."
    echo "Установите: sudo apt install build-essential curl wget ca-certificates"
    exit 1
  fi
done

CURRENT_VERSION=$($INSTALL_PREFIX/bin/git --version 2>/dev/null | grep -oP '[0-9]+\.[0-9]+\.[0-9]+' | head -1 || echo "none")
LATEST_VERSION=$(curl -s https://api.github.com/repos/git/git/tags | grep -oP '"name": "v\K[0-9]+\.[0-9]+\.[0-9]+' | head -1)

if [ -z "$LATEST_VERSION" ]; then
  echo "Ошибка: не удалось определить последнюю версию Git."
  exit 1
fi

if [ "$CURRENT_VERSION" = "$LATEST_VERSION" ]; then
  echo "Git уже последней версии: $CURRENT_VERSION"
  exit 0
fi

echo "Обновление Git с $CURRENT_VERSION до $LATEST_VERSION"

cd "$BUILD_DIR"
rm -rf git-*
wget -q "https://github.com/git/git/archive/refs/tags/v$LATEST_VERSION.tar.gz"
tar -xvf "v$LATEST_VERSION.tar.gz"
cd git-*/
make prefix="$INSTALL_PREFIX" all
sudo make prefix="$INSTALL_PREFIX" install

echo "Git успешно обновлён до $(git --version)"
EOF

chmod +x ~/git-build/update-git.sh

Запуск обновления:

~/git-build/update-git.sh

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 Проверка настроек

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: Проверьте, какой бинарный файл используется:

which git

Шаг 2: Если выводит /usr/bin/git, измените порядок PATH:

export PATH=/usr/local/bin:$PATH
echo 'export PATH=/usr/local/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

Шаг 3: Проверьте снова:

which git

Ожидаемый вывод: /usr/local/bin/git

8. ❌ Удаление Git

Удаление APT-версии

sudo apt remove --purge git -y
sudo apt autoremove -y

Удаление source-сборки

sudo rm -rf /usr/local/bin/git*
sudo rm -rf /usr/local/libexec/git-core
sudo rm -rf /usr/local/share/git-core
rm -rf ~/git-build

Удаление конфигурации

rm -rf ~/.gitconfig ~/.git-credentials

Проверка удаления

command -v git

Ожидаемый вывод: Пустая строка.

9. 📝 Чек-лист: всё готово к работе

  • [ ] Система обновлена (sudo apt update && sudo apt upgrade -y)
  • [ ] Выбран и выполнен один из способов установки (APT / Source)
  • [ ] git --version показывает ожидаемую версию
  • [ ] Настроены имя и email (git config --list)
  • [ ] git init создаёт репозиторий без ошибок
  • [ ] (Для source-сборки) Скрипт обновления работает (~/git-build/update-git.sh)

Заключение

Вы установили Git на Debian. Если вы выбрали APT — получили стабильную, проверенную версию, которая будет обновляться вместе с системой. Если собрали из исходников — получили самую свежую версию, которую можно обновлять скриптом из раздела 4.6. Главное, что нужно запомнить: после установки обязательно настройте имя и email, иначе Git не даст создавать коммиты. Для работы с удалёнными репозиториями (GitHub, GitLab) используйте SSH-ключи.

Что дальше:

  • Изучите официальную документацию Git
  • Настройте SSH-ключи для работы с GitHub
  • Изучите работу с ветками: git branch, git merge, git rebase
  • Настройте Git для работы с несколькими удалёнными репозиториями
  • Рассмотрите графический интерфейс GitHub Desktop или gitk