Git для начинающих

Git - это мощная, но иногда непонятная система управления версиями. Это руководство объясняет все шаг за шагом, без предположения, что вы уже знаете Git. Здесь есть определения, основные команды, полезные советы и лучшие практики.

Что такое Git?

Git - это система контроля версий. Она помогает отслеживать изменения в коде, сохранять историю, работать над проектом в команде и более уверенно управлять изменениями. Git является самой популярной системой контроля версий у разработчиков.

Основные термины

Прежде чем использовать Git, полезно понять несколько ключевых понятий:

Репозитории

Репозиторий - это вся ваша проектная папка с кодом и историей изменений. У вас может быть репозиторий на вашем компьютере (локальный репозиторий) и репозиторий на удаленном сервере, например на GitHub или GitLab.

Чтобы скопировать репозиторий к себе на компьютер, используют команду клонирования (git clone).

Ветки (Branches)

Ветки позволяют параллельно развивать функции или экспериментировать, не мешая основной версии проекта. Например, вы можете создать ветку feature/login для работы над модулем входа в систему.

Git очень экономно хранит данные: он не копирует весь проект, а запоминает изменения относительно базовой точки, где ветка была создана.

Коммиты (Commits)

Коммит - это снимок изменений в проекте. Каждый коммит содержит сообщение, которое описывает сделанные изменения и причину их внесения.

Пример хорошо структурированных сообщений:

1. Write tests for formatDate function
2. Create formatDate function
3. Add timestamps to articles using html time element
4. Add CSS to style timestamps

Установка и настройка Git

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

В терминале введите:

git --version

Если Git не установлен, установите его:

macOS:

brew install git

Ubuntu/Linux:

sudo apt-get install git

Windows:
Git можно установить через официальный установщик или использовать WSL с Ubuntu для полноценной среды командной строки.

Основная настройка

Указать имя пользователя и email

Это важно, потому что Git добавляет эту информацию к каждому вашему коммиту:

git config --global user.name "Ваше Имя"
git config --global user.email your.email@example.com

Флаг --global означает, что настройки применяются ко всем репозиториям. Если хотите настроить локально — уберите --global.

Управление учетными данными

Чтобы не вводить логин и пароль каждый раз при push/pull, можно включить менеджер учетных данных:

git config credential.helper store

или временное хранение в памяти:

git config credential.helper cache

Псевдонимы (Aliases)

Чтобы упростить ввод команд, удобно настроить короткие псевдонимы:

git config --global alias.s status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit

Теперь вместо git status можно писать просто git s что может сэкономить время и усилия.

Начало работы

Клонирование репозитория

Чтобы скопировать удаленный репозиторий к себе:

git clone https://github.com/путь/к-репозиторию.git

Git создаст папку с проектом и настроит связь с удаленным репо (remote origin).

Инициализация нового репозитория

Если у вас есть проект без Git, можно инициализировать его:

git init

Добавление удаленного репозитория

Если вы создали локальный репозиторий и хотите привязать к удаленному:

git remote add origin https://github.com/путь/к-репозиторию.git

Основные команды

Проверка статуса

git status

или с псевдонимом:

git s

Показывает состояние файлов: что изменено, что не отслеживается, что готово к коммиту.

Работа с ветками

Создать новую ветку:

git branch имя-ветки

Перейти на ветку:

git checkout имя-ветки

Создать и сразу перейти:

git checkout -b имя-ветки

Стадия (Staging)

Чтобы подготовить изменения к коммиту:

git add .

или указать конкретные файлы:

git add путь/к/файлу.js

Коммит

git commit -m "Сообщение коммита"

Если не указать -m, откроется редактор (например, Vim), где можно написать сообщение вручную.

Отмена неверного коммита

Если вы случайно закоммитили ошибки:

git reset HEAD~1

Это перемещает HEAD на предыдущий коммит и оставляет изменения на рабочем месте. Для полного отката с потерей всех изменений можно добавить:

git reset --hard HEAD~1

Но будьте осторожны - это уничтожает работу без возможности восстановления.

Отправка на удаленный сервер

git push

Слияние веток

Перейдите на ветку, куда хотите влить изменения (например, master):

git merge имя-ветки

Загрузка изменений с удаленного репо

git pull

Разрешение конфликтов

Если Git не может автоматически объединить ветки, вы увидите сообщение о конфликте. Тогда Git остановит процесс слияния и попросит вас вручную разрешить конфликт в указанных файлах. После исправления:

git add конфликтный_файл
git commit

Советы и трюки

Stash - временное сохранение

Когда вы хотите отложить изменения и переключиться на другую ветку:

git stash

Вернуть отложенные изменения:

git stash pop

Список всех stash:

git stash list

Извлечь файл из другой ветки

Если нужно взять файл из ветки master:

git checkout master путь/к/файлу.js

Просмотр недавно активных веток

git for-each-ref --count=10 --sort=-committerdate refs/heads/ --format="%(refname:short)"

Удаление локальных веток, уже влитых в master

git fetch --prune

Дополнительно можно с помощью команды оболочки найти и удалить все слитые ветки:

git branch --merged |
grep -v "\*" |
grep -v "master" >/tmp/merged &&
cat /tmp/merged |
xargs -n 1 git branch -d

Git это не просто набор команд, это инструмент, который позволяет безопасно экспериментировать, анализировать ход разработки и уверенно работать в команде. Практикуйтесь, делайте небольшие коммиты, часто синхронизируйтесь с удаленным репо и Git перестанет казаться сложным.

Комментарии (0)

Войдите, чтобы оставить комментарий

Похожие статьи

Что можно автоматизировать с помощью Bash: реальные сценарии и примеры

Подробный разбор возможностей Bash с практическими примерами: резервное копирование, деплой, мониторинг, обработка CSV, управление Docker и автоматизация серверных задач.

NativePHP для мобильных приложений стал полностью бесплатным

NativePHP for Mobile с версии v3 стал полностью бесплатным и открытым, с переходом на плагинную архитектуру, новым инструментом Jump для тестирования и другими нововведениями для разработчиков на Laravel.

Простой способ работать с конкурентностью и параллелизмом в Python

Объяснение, как с помощью стандартных средств Python (concurrent.futures) легко решать задачи конкурентности и параллелизма. Приведены практические примеры использования пулов потоков и процессов.

Генерация PDF в Laravel: Spatie Laravel PDF vs Laravel DomPDF

Сравнение двух популярных пакетов для генерации PDF в Laravel, современного Spatie Laravel PDF с рендерингом через браузер и классического Laravel DomPDF, который работает в чистом PHP. Обсуждаем преимущества, примеры, ограничения и когда что использовать.