Основы Git: как не потеряться в истории коммитов и не сломать репозиторий
Git — это распределённая система контроля версий, которая позволяет отслеживать изменения в файлах и координировать работу над проектами. Она стала стандартом де-факто в разработке программного обеспечения, DevOps и даже в администрировании инфраструктуры (через инфраструктуру как код — IaC).
Если ты, как и я, любишь всё держать под контролем — включая свои конфиги, скрипты и домашние сервисы — Git станет твоим лучшим другом. В этой статье мы разберём основы Git так, чтобы ты мог уверенно использовать его уже сегодня, не боясь сломать что-то.
🔹 Что такое Git?
Git — это инструмент, созданный Линусом Торвальдсом в 2005 году для управления разработкой ядра Linux. Его ключевые особенности:
Распределённость: каждый участник имеет полную копию репозитория.
Высокая производительность: операции происходят локально.
Надёжность: данные шифруются хешами (SHA-1), что делает их практически неизменяемыми.
Гибкость: поддержка ветвления, слияния, перезаписи истории (с осторожностью!).
Флаг --global означает, что настройки применятся ко всем репозиториям на этом компьютере.
Чтобы изменить настройки только для одного проекта — опусти --global.
Также полезно задать редактор по умолчанию (на случай, если Git потребует ввести сообщение):
Я, например, использую Gitea на своём сервере в домашней сети.
Это позволяет мне хранить compose файлы, скрипты, код и документацию в одном месте, с полным контролем.
🔹 Заключение
Git — это не просто инструмент, а культура работы с кодом и конфигурациями. Освоив основы, ты сможешь:
Отслеживать изменения в своих скриптах
Автоматизировать деплой через CI/CD
Совместно работать с другими
Развертывать инфраструктуру как код (Terraform, Ansible)
QUOTE
“Лучше потратить 10 минут на коммит, чем 10 часов на восстановление”
— Мудрый админ из будущего
git config --global user.name "Lupa_Pupa" #задаем имя пользователяgit config --global user.email "mail@mail.ru" #задаем эл почтуgit config --global credential.helper cache #кэшируем логины и пароли, что бы постоянно их не вводить
Подготовительный этап
cd project_folder #переходим в дирректорию проектаgit init #превращает папку проекта в локальный репозиторийgit remote add origin https://url_my_repo.ru #соединяем локальный репозиторий с удаленным#также можно ознакомится:git remote -v #отображает все удалённые подключения репозиториямgit remote show #получить дополнительные сведения об удалённом репозитории
Основная работа
git clone https://url_my_repo.ru #скачать все файлы из удаленнго репозиторияgit status #посмотреть статус всех не сохраненных изменений в файлах репозиторияgit add . #добавляет текущую папку в индекс git (подготовка к коммиту), выполняется всегда перед коммитомgit commit -m "short summary about the commit" #сохранить в истории git локальноgit log #информация обо всех коммитахgit checkout {hash_commit} #вернуться к раннему коммитуgit push origin master #публикует коммиты из локального в привязанный удаленный репозиторий, в ветку master о всеми коммитамиgit pull origin master #скачать из удаленного репозитория в локальный со всеми коммитами
Работа с ветками
git branch #посмотреть список всех локальных ветокgit branch my_branch #создать ветку my_branchgit checkout my_branch #переключится на веткуmy_branchgit push origin my_branch #опубликовать в удаленный репозиторий изменения из ветки my_branch
Слияние веток
git checkout master #переходим в ту ветку, в которую будем сливать my_branchgit pull origin master #обновляем локальную ветку с сервераgit merge my_branch #слить ветку my_branch в текущую ветку(master) в виде одного коммита#альтернатива merge это rebasegit rebase my_branch #слить ветку my_branch в текущую ветку(master) с переносом ввсех коммитов из my_branch в master
Вариант 2:
Работа над проектом основываясь на удалённом репозитории:
git clone <адрес_репозитория> #скачиваем удаленный репозиторий на локальную машину
Перед тем, как создавать новый функционал и новую ветку, стоит обновить master на вашем устройстве. Для этого нужно находиться в этой ветке и выполнить следующую команду:
git checkout master #переключаемся git pull origin master #подтягиваем изменения из удаленного репозитория
Вспомогательные команды
Просмотреть изменения относительно двух веток можно командой:
git diff <исходная_ветка> <целевая_ветка>
Удалить ненужную ветку:
git branch -d <название_ветки>Просмотр историю ветки:
Подсказки по популярным командам:
# По популярным командамgit help# Или по конкретной командеgit help <название_команды># Например clonegit help clone