↓Перейти к содержанию
  1. Git: руководства и команды/

Шпаргалка по командам Git: полный справочник

·11 минут·

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

1. Настройка Git (Configuration) #

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

# Установить имя пользователя для всех репозиториев
git config --global user.name "Иван Петров"
git config --global user.email "[email protected]"

# Установить редактор кода по умолчанию
git config --global core.editor "code --wait"

# Установить основную ветку как main вместо master
git config --global init.defaultBranch main

# Посмотреть все установленные параметры
git config --list
git config --list --global

# Установить параметр для одного репозитория (без --global)
git config user.name "Локальное имя"

Подробнее о /ru/git/nastrojka-polzovatelya-git/ можно прочитать в отдельной статье.

2. Создание и клонирование репозитория #

Начинаем работу с Git — инициализируем новый репозиторий или клонируем существующий. Инициализация создаёт новый локальный репозиторий, а клонирование позволяет скачать полную копию удалённого проекта со всей историей.

# Инициализировать новый репозиторий в текущей папке
git init

# Инициализировать репозиторий в конкретной папке
git init <папка>

# Создать bare репозиторий (обычно на сервере)
git init --bare

# Клонировать репозиторий
git clone <url>

# Клонировать в папку с другим названием
git clone <url> <папка>

# Неполное клонирование (только последние коммиты)
git clone --depth 1 <url>

# Клонировать конкретную ветку
git clone -b <ветка> <url>

# Клонировать с определённой глубиной истории
git clone --depth 10 <url>

3. Статус и просмотр изменений #

Перед добавлением изменений в коммит важно знать, какие файлы были изменены и как они отличаются от последней версии. Команда status показывает общее состояние репозитория, а diff позволяет увидеть конкретные различия.

# Посмотреть статус всех файлов
git status

# Краткий формат вывода (более компактный)
git status -s

# Показать unstaged изменения (изменения в файлах)
git diff

# Показать staged изменения (что будет в коммите)
git diff --staged

# Показать все изменения (staged и unstaged)
git diff HEAD

# Сравнить две ветки
git diff <ветка1>..<ветка2>

# Посмотреть изменения в конкретном файле
git diff <файл>

4. Добавление файлов и создание коммитов #

Это ядро работы с Git — добавление изменений в staging area и создание коммитов. Каждый коммит содержит снимок проекта в определённый момент времени с описанием того, что было изменено. Для получения дополнительной информации см. /ru/git/git-commit/.

# Добавить файл в staging area
git add <файл>

# Добавить все изменения
git add .

# Интерактивное добавление по кускам (полезно для частичных коммитов)
git add -p

# Создать коммит с сообщением
git commit -m "Добавлена новая функция"

# Добавить и закоммитить в одной команде (только для отслеживаемых файлов)
git commit -am "Исправлена ошибка"

# Изменить последний коммит (добавить забытые файлы или изменить сообщение)
git commit --amend

# Изменить только сообщение последнего коммита
git commit --amend --no-edit

# Создать пустой коммит (иногда необходимо для ci/cd)
git commit --allow-empty -m "Пустой коммит"

5. История коммитов и просмотр логов #

История проекта — это его “летопись”, где записано каждое важное изменение. Git log предоставляет мощный инструмент для навигации по истории, поиска конкретных коммитов и анализа эволюции проекта. /ru/git/git-log/ подробно описывает все возможности этой команды.

# Показать всю историю коммитов
git log

# Компактный формат (одна строка на коммит)
git log --oneline

# Красиво отобразить ветки и слияния
git log --oneline --graph --all

# История коммитов конкретного автора
git log --author="Иван Петров"

# Коммиты за последние 2 недели
git log --since="2 weeks ago"

# Коммиты с определённым текстом в сообщении
git log --grep="исправлена ошибка"

# Показать историю конкретного файла с различиями
git log -p <файл>

# История файла с учётом переименований
git log --follow <файл>

# Показать конкретный коммит со всеми деталями
git show <коммит>

# Показать коммит за два шага до HEAD
git show HEAD~2

# Показать, кто последний раз изменил каждую строку файла
git blame <файл>

6. Работа с ветками #

Ветки позволяют работать параллельно над несколькими функциями без влияния на основной код. Это фундаментальный концепт в Git, позволяющий разработчикам работать независимо друг от друга. Подробный разбор /ru/git/vetki-v-git/ поможет лучше понять работу с ветками.

# Список локальных веток
git branch

# Список всех веток (локальные и удалённые)
git branch -a

# Создать новую ветку (без переключения)
git branch <имя>

# Удалить ветку безопасно (только если она слита)
git branch -d <имя>

# Принудительно удалить ветку
git branch -D <имя>

# Переименовать ветку
git branch -m <старое_имя> <новое_имя>

# Переключиться на ветку
git switch <имя>

# Создать и переключиться на новую ветку
git switch -c <имя>

# Создать ветку из удалённой ветки и переключиться
git switch -c <имя> origin/<имя>

# Альтернативный способ создания и переключения
git checkout -b <имя>

7. Слияние и перебазирование #

Слияние и перебазирование — это два основных способа интеграции изменений из одной ветки в другую. Merge создаёт специальный коммит-слияние, а rebase переписывает историю. Выбор между ними влияет на историю проекта и удобство работы.

# Слить ветку в текущую
git merge <ветка>

# Слить с созданием коммита-слияния (даже если это fast-forward)
git merge --no-ff <ветка>

# Слить, сжав все коммиты в один
git merge --squash <ветка>

# Отменить процесс слияния
git merge --abort

# Перебазировать текущую ветку на другую
git rebase <ветка>

# Интерактивное перебазирование последних 3 коммитов
git rebase -i HEAD~3

# Отменить перебазирование
git rebase --abort

# Продолжить после решения конфликта
git rebase --continue

# Скопировать конкретный коммит в текущую ветку
git cherry-pick <коммит>

# Скопировать диапазон коммитов
git cherry-pick <коммит1>..<коммит2>

8. Удалённые репозитории и синхронизация #

Работа с удалёнными репозиториями (GitHub, GitLab, Bitbucket) — это то, что позволяет команде сотрудничать и делиться кодом. Push отправляет изменения на сервер, pull скачивает и объединяет изменения. /ru/git/git-push/ содержит подробную информацию о загрузке изменений на сервер.

# Показать список удалённых репозиториев
git remote -v

# Добавить новый удалённый репозиторий
git remote add origin <url>

# Изменить URL удалённого репозитория
git remote set-url origin <новый_url>

# Переименовать удалённый репозиторий
git remote rename origin upstream

# Удалить удалённый репозиторий
git remote remove <имя>

# Скачать изменения с сервера (без слияния)
git fetch origin

# Скачать изменения со всех удалённых репозиториев
git fetch --all

# Скачать и слить изменения из сервера
git pull origin main

# Pull с перебазированием вместо слияния
git pull --rebase origin main

# Загрузить ветку на сервер
git push origin main

# Загрузить и установить upstream ветку
git push -u origin main

# Безопасный force push (отвергает, если на сервере есть изменения)
git push --force-with-lease

# Загрузить все теги
git push origin --tags

# Удалить ветку на сервере
git push origin --delete <ветка>

# Загрузить конкретный тег
git push origin v1.0.0

9. Временное сохранение изменений (Stash) #

Stash позволяет временно сохранить незакончённую работу и вернуться к чистому состоянию рабочей директории. Это полезно, когда вам нужно срочно переключиться на другую ветку или задачу. Более подробно о /ru/git/git-stash/ можно прочитать в специальной статье.

# Сохранить текущие изменения
git stash

# Сохранить изменения с описанием
git stash push -m "Описание работы"

# Список всех сохранённых изменений
git stash list

# Вернуть последние сохранённые изменения и удалить их
git stash pop

# Вернуть конкретные сохранённые изменения (без удаления)
git stash apply stash@{0}

# Удалить конкретное сохранение
git stash drop stash@{0}

# Показать различия в сохранении
git stash show -p stash@{0}

# Создать ветку из сохранения (полезно для конфликтов)
git stash branch <новая_ветка>

# Удалить все сохранения
git stash clear

10. Отмена изменений и отката #

Иногда необходимо отменить изменения или вернуться к предыдущему состоянию. Git предоставляет несколько способов это сделать, от отмены несохранённых изменений до отката конкретных коммитов. /ru/git/git-reset/ подробно объясняет различные способы отката.

# Отменить unstaged изменения в файле
git restore <файл>

# Убрать файл из staging area (отменить git add)
git restore --staged <файл>

# Создать новый коммит, который отменяет изменения
git revert <коммит>

# Отменить последний коммит, сохранив изменения (soft reset)
git reset HEAD~1

# Отменить последний коммит и выбросить изменения (hard reset)
git reset --hard HEAD~1

# Сбросить на состояние удалённой ветки
git reset --hard origin/main

# Показать историю всех операций (для восстановления потерянных коммитов)
git reflog

# Восстановить коммит из reflog
git reset --hard <коммит_из_reflog>

# Альтернативный способ отмены файла (новый синтаксис)
git checkout <файл>

# Отменить конкретный файл в конкретном коммите
git checkout <коммит> -- <файл>

11. Теги (Tags) #

Теги используются для отметки конкретных точек в истории, обычно для обозначения версий релиза. Легкие теги — это просто указатели на коммиты, а аннотированные теги содержат дополнительную информацию (автор, дату, сообщение).

# Список всех тегов
git tag

# Создать лёгкий тег
git tag v1.0.0

# Создать аннотированный тег (с сообщением)
git tag -a v1.0.0 -m "Релиз версии 1.0.0"

# Показать информацию о теге
git show v1.0.0

# Загрузить все теги на сервер
git push origin --tags

# Загрузить конкретный тег
git push origin v1.0.0

# Удалить тег локально
git tag -d v1.0.0

# Удалить тег на сервере
git push origin --delete v1.0.0

# Создать тег на конкретном коммите
git tag v1.0.0 <коммит>

12. Полезные утилиты и операции #

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

# Переименовать или переместить файл
git mv <старое_имя> <новое_имя>

# Удалить файл из Git и с диска
git rm <файл>

# Удалить файл из Git, но оставить его на диске
git rm --cached <файл>

# Удалить все untracked файлы и папки
git clean -fd

# Показать, какие файлы будут удалены (сухой запуск)
git clean -n

# Начать бинарный поиск коммита с ошибкой
git bisect start
git bisect bad
git bisect good <коммит>

# Создать рабочую директорию для отдельной ветки
git worktree add <путь> <ветка>

# Инициализировать и обновить подмодули
git submodule update --init --recursive

# Показать размер объектов в хранилище
git gc

13. Таблица флагов и опций #

Вот самые полезные флаги, которые часто используются с командами Git:

ФлагКомандаОписание
-acommitДобавить и закоммитить отслеживаемые файлы
-mcommit, tagСообщение для коммита или тега
--amendcommitИзменить последний коммит
-paddИнтерактивное добавление по кускам
--stageddiffПоказать staged изменения
-bclone, switchУказать ветку
--no-ffmergeВсегда создавать коммит-слияние
-irebaseИнтерактивное перебазирование
--force-with-leasepushБезопасный force push
--alllog, push, fetchПрименить ко всем ветк/репозиториям
-vremote, branchПодробный вывод
-dbranchУдалить ветку
-DbranchПринудительно удалить ветку
--depthclone, fetchНеполное клонирование
-upushУстановить upstream ветку

14. Часто задаваемые вопросы (FAQ) #

Какие команды Git нужно знать в первую очередь? #

Если вы только начинаете, сосредоточьтесь на базовом наборе:

  1. git config — настройка пользователя
  2. git init или git clone — создание/клонирование репозитория
  3. git status — проверка статуса
  4. git add и git commit — сохранение изменений
  5. git push и git pull — синхронизация с сервером
  6. git branch и git merge — работа с ветками

Эти команды покрывают 80% работы в Git. Остальное вы выучите по мере необходимости.

Как посмотреть все доступные команды Git? #

Используйте команду git help:

# Список всех команд
git help -a

# Полная документация для конкретной команды
git help <команда>

# Краткая справка
git <команда> -h

Как отменить последний коммит в Git? #

Это зависит от того, что вы хотите сделать:

  • Отменить коммит, но сохранить изменения: git reset HEAD~1
  • Отменить коммит и выбросить изменения: git reset --hard HEAD~1
  • Создать новый коммит-отмену: git revert HEAD
  • Изменить сообщение последнего коммита: git commit --amend -m "новое сообщение"

Подробнее см. /ru/git/git-reset/.

Как удалить ветку в Git? #

Для удаления локальной ветки:

git branch -d <имя>        # безопасное удаление (если слита)
git branch -D <имя>        # принудительное удаление

Для удаления удалённой ветки:

git push origin --delete <имя>

Чем git pull отличается от git fetch? #

  • git fetch — скачивает изменения с сервера, но не объединяет их с вашим кодом. Это безопасная операция, которая не изменяет вашу рабочую директорию.
  • git pull — это комбинация git fetch + git merge. Она скачивает изменения И сразу объединяет их с вашей веткой.

По этой причине многие рекомендуют использовать git fetch для большей контроля над процессом слияния.

Как посмотреть историю изменений файла? #

Используйте несколько команд в зависимости от нужной информации:

# История коммитов файла
git log <файл>

# История с различиями (diff)
git log -p <файл>

# История с учётом переименований
git log --follow <файл>

# Кто последний раз изменил каждую строку
git blame <файл>

# История конкретной строки
git log -L <строка>,<конец>:<файл>

Как разрешить конфликт слияния? #

Конфликты происходят, когда две ветки изменили одни и те же строки:

  1. Откройте файл с конфликтом — вы увидите маркеры <<<<<<<, =======, >>>>>>>
  2. Отредактируйте содержимое — выберите, какие изменения оставить
  3. Добавьте файл: git add <файл>
  4. Завершите слияние: git commit

Либо используйте инструмент слияния: git mergetool

Когда использовать rebase вместо merge? #

  • Merge: используйте для интеграции завершённых функций в главную ветку (сохраняет историю всех изменений)
  • Rebase: используйте перед отправкой изменений на сервер (делает историю чище) или для обновления вашей ветки новыми изменениями из main

Общее правило: не переписывайте историю публичных веток.


Заключение #

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

Для более глубокого изучения отдельных тем обратитесь к специальным статьям о /ru/git/git-commit/, /ru/git/vetki-v-git/, /ru/git/git-log/ и других аспектах работы с Git.

Полезные ресурсы: