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 gitUbuntu/Linux:
sudo apt-get install gitWindows:
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/путь/к-репозиторию.gitGit создаст папку с проектом и настроит связь с удаленным репо (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 -dGit это не просто набор команд, это инструмент, который позволяет безопасно экспериментировать, анализировать ход разработки и уверенно работать в команде. Практикуйтесь, делайте небольшие коммиты, часто синхронизируйтесь с удаленным репо и Git перестанет казаться сложным.