Git — это мощная система контроля версий, которая является стандартом в современной разработке. Если вы только начинаете свой путь, обилие команд может показаться пугающим. Эта статья представляет собой структурированную шпаргалку, которая проведет вас через все основные этапы работы с Git: от настройки до публикации кода.
Начало работы: настройка и создание репозитория
Прежде чем начать работу, нужно представиться системе. Эти настройки нужны, чтобы подписывать ваши коммиты.
# Установка имени и email (выполняется один раз)
git config --global user.name "Smit"
git config --global user.email smit@mail.com
# Проверка конфигурации
git config --list
# Проверка конкретного параметра
git config user.name
Совет: На Windows может возникнуть проблема с переносами строк. Чтобы избежать ее, можно отключить проверку (но для новых проектов лучше использовать настройку true или input).
git config --global core.autocrlf false
git config --global core.safecrlf falseТеперь создадим наш первый репозиторий:
# Создаем папку и переходим в нее
mkdir test
cd test
# Создаем первый файл
touch test.html
# Инициализируем Git-репозиторий в текущей папке
git initРабочий цикл: от изменений до коммита
Основной цикл работы с Git состоит из трех шагов: внести изменения, проиндексировать их и закоммитить.
Индексация изменений (добавление в "зону подготовки")
# Добавить конкретный файл
git add test.html
# Добавить все файлы в текущей папке
git add .
# Добавить все файлы в проекте
git add --allПросмотр изменений перед коммитом
Перед тем как сделать коммит, всегда полезно проверить, что именно вы сохраните.
# Показывает непроиндексированные изменения
git diff
# Показывает проиндексированные изменения (что войдет в коммит)
git diff --cached
# или
git diff --stagedСоздание коммита (сохранение версии)
# Коммит с сообщением
git commit -m "First Commit"
# Коммит ВСЕХ измененных файлов (кроме новых, не добавленных) без предварительного git add
git commit -a -m 'Name Commit'Отмена действий на этапе коммита
# Исключить файл из индекса (перед коммитом)
git reset HEAD test.html
# Отменить последний коммит и сделать новый с исправлениями
git commit --amend
# ОПАСНО: Отменить все локальные изменения в файле (действие необратимо!)
git checkout -- test.htmlУправление файлами
# Удалить файл и проиндексировать удаление
git rm test.html
# Переименовать файл и проиндексировать переименование
git mv test.html test.txtАнализ истории проекта
История коммитов — это летопись вашего проекта.
# Подробная история коммитов
git log
# Краткая история (один коммит — одна строка)
git log --pretty=oneline
# История всех веток в одну строку
git log --pretty=oneline --all
# Последние 3 коммита
git log --max-count=3
# Коммиты конкретного автора
git log --author="test"
# Произвольный формат вывода
git log --pretty=format:"%h - %s : %ad [%an]" --date=shortРабота с ветками
Ветки — одна из самых мощных возможностей Git. Они позволяют работать над разными функциями изолированно.
# Создать новую ветку
git branch testing
# Создать ветку и сразу перейти на нее
git checkout -b testing
# Переключиться между ветками
git checkout testing
git checkout master
# Список всех веток (звездочкой помечена текущая)
git branch
# Список веток с последним коммитом
git branch -v
# Удалить ветку (безопасно, только если она слита)
git branch -d testing
# Принудительно удалить ветку (с потерей изменений)
git branch -D testing
# Слить ветку testing с текущей
git merge testing
# Прервать слияние в случае конфликта
git merge --abortРабота с удаленным репозиторием (GitHub, GitLab и др.)
Чтобы поделиться кодом или работать в команде, нужен удаленный репозиторий.
Настройка и отправка кода
# Привязать локальный репозиторий к удаленному (origin — общепринятое имя)
git remote add origin git@github.com:login/name_repository.git
# Отправить изменения в ветку master на удаленный репозиторий
git push origin master
# Принудительно отправить изменения (перезаписать историю, опасно!)
git push -f origin master
# Создать на удаленном репозитории новую ветку и отправить туда данные
git push --set-upstream origin testПолучение и синхронизация кода
# Склонировать чужой репозиторий на свой компьютер
git clone git@github.com:login/name_repository.git
# Скачать изменения с удаленного репозитория и автоматически слить с текущей веткой
git pull origin master
# Только скачать изменения, но не сливать их (позволяет проверить)
git fetch origin
# Привести локальную ветку в точное соответствие с удаленной (стирает локальные коммиты!)
git reset --hard origin/masterСпасательные операции
Когда что-то пошло не так, Git предоставляет инструменты для отладки.
# Просмотреть журнал всех перемещений HEAD (помогает найти "потерянные" коммиты)
git reflog --date=local
# Откатиться к конкретному коммиту по его хешу
git checkout d917d0b21e071bbe9bcbd0abd96586eaef4397a0
# "Отменить" коммит, создав новый, который его отменяет (без редактирования сообщения)
git revert HEAD --no-edit
# Графический интерфейс для просмотра истории (требует установки)
gitkЭта шпаргалка покрывает 95% повседневных задач при работе с Git. Сохраните ее и обращайтесь по мере необходимости, и вскоре эти команды станут для вас второй натурой. Удачи в освоении!