ToolActToolAct

Справочник команд Git

Полный справочник команд Git, классифицированный по категориям для быстрого поиска

Все: 65 个命令

Базовые команды(13)

git init

Создать новый Git репозиторий в текущем каталоге

git clone <url>

Клонировать удалённый репозиторий локально

git clone --depth=1 <url>

Неглубокое клонирование, получить только последний коммит

git add <file>

Добавить файл в индекс

git add .

Добавить все изменения в индекс

git commit -m "message"

Закоммитить изменения из индекса

git commit --amend

Изменить последний коммит

git status

Показать текущее состояние репозитория

git diff

Показать незакоммиченные изменения

git diff --staged

Показать изменения в индексе

git config --list

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

git config --global user.name "name"

Установить глобальное имя пользователя

git config --global user.email "email"

Установить глобальный email

Управление ветками(14)

git branch

Показать все локальные ветки

git branch -a

Показать все ветки (включая удалённые)

git branch <name>

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

git branch -d <name>

Удалить ветку

git branch -m <old> <new>

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

git checkout <branch>

Переключить ветку

git checkout -b <branch>

Создать и переключиться на новую ветку

git switch <branch>

Переключить ветку (Git 2.23+)

git switch -c <branch>

Создать и переключиться на новую ветку (Git 2.23+)

git merge <branch>

Слить указанную ветку в текущую

git merge --no-ff <branch>

Слить ветку и создать merge-коммит

git rebase <branch>

Rebase текущей ветки на указанную

git rebase --continue

Продолжить rebase после разрешения конфликта

git cherry-pick <commit>

Выбрать конкретный коммит для слияния в текущую ветку

Удалённые операции(10)

git remote -v

Показать информацию об удалённом репозитории

git remote add <name> <url>

Добавить удалённый репозиторий

git fetch <remote>

Получить последнее содержимое из удалённого репозитория

git fetch --all

Получить обновления всех удалённых репозиториев

git pull <remote> <branch>

Получить и слить удалённую ветку

git pull --rebase

Получить и сделать rebase

git push <remote> <branch>

Отправить в удалённый репозиторий

git push -f

Принудительно отправить (использовать осторожно)

git push -u origin <branch>

Отправить и установить upstream-ветку

git push origin --delete <branch>

Удалить удалённую ветку

Отмена изменений(8)

git reset <file>

Отменить индексацию файла

git reset --soft HEAD~1

Отменить последний коммит, сохранив изменения

git reset --mixed HEAD~1

Отменить коммит и индексацию, сохранив рабочую директорию

git reset --hard HEAD~1

Отменить коммит и отбросить все изменения

git revert <commit>

Отменить указанный коммит (создать новый коммит)

git restore <file>

Восстановить файл в рабочей директории (Git 2.23+)

git restore --staged <file>

Отменить индексацию файла (Git 2.23+)

git clean -fd

Удалить неотслеживаемые файлы и каталоги

Управление тегами(6)

git tag

Показать все теги

git tag <name>

Создать лёгкий тег

git tag -a <name> -m "msg"

Создать аннотированный тег

git tag -d <name>

Удалить локальный тег

git push origin <tag>

Отправить тег в удалённый репозиторий

git push --tags

Отправить все теги в удалённый репозиторий

История(7)

git log

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

git log --oneline

Компактный просмотр истории коммитов

git log --oneline --graph --all

Графическое отображение истории всех веток

git show <commit>

Показать детали коммита

git blame <file>

Показать историю изменений каждой строки файла

git reflog

Показать всю историю операций

git bisect start

Начать бинарный поиск проблемного коммита

Stash(7)

git stash

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

git stash save "message"

Сохранить изменения в stash с сообщением

git stash list

Показать все stash

git stash pop

Применить и удалить последний stash

git stash apply

Применить последний stash без удаления

git stash drop

Удалить последний stash

git stash clear

Удалить все stash

Что такое Git?

Шпаргалка Git — это быстрый справочник по командам контроля версий, сгруппированный по задачам. Git является распределенной системой: каждый clone содержит историю проекта, ветки являются легкими указателями, а commit фиксирует, как кодовая база менялась со временем. Шпаргалка полезна, когда понятен рабочий сценарий, но забыта точная команда: посмотреть staged-изменения, создать ветку, отменить commit, спрятать работу в stash, поставить тег релиза или синхронизироваться с remote. Это справочник, а не замена пониманию состояния репозитория. Опасные команды вроде reset --hard, clean -fd, rebase и force push нужно копировать только после проверки незакоммиченных изменений, текущей ветки и влияния на удаленный репозиторий.

Руководство по использованию

Быстрая справка

  1. Нажмите на карточку команды, чтобы скопировать команду
  2. Используйте поле поиска для быстрого нахождения нужных команд
  3. Нажмите на теги категорий для фильтрации по типу
  4. Наведите курсор на команды, чтобы увидеть подробные описания

Возможности

Организация по сценариямКоманды сгруппированы по категориям: основные, ветки, удалённые, отмена, теги, история и stash — для удобного поиска без прокрутки всего списка.
Поиск и фильтрацияСовместите поле поиска и кнопки категорий для быстрого сужения результатов — идеально, когда вы помните только часть команды или описания.
Копирование по кликуНажмите на карточку команды для копирования, затем замените названия веток, пути к файлам или хеши коммитов по необходимости.
Предупреждение о рискахКоманды undo, reset и force push требуют проверки области применения, чтобы случайно не удалить локальные изменения или не перезаписать общую историю.

Продвинутые советы

  • Используйте git restore --staged для отмены добавления файлов в индекс
  • Используйте git commit --amend для изменения последнего коммита
  • Используйте git stash для временного сохранения рабочего прогресса
  • Используйте git revert для отмены опубликованных коммитов

Применение

Поиск нужной категории команд в процессе работыИщите и фильтруйте команды Git по базовым операциям, веткам, удалённым репозиториям, отмене, тегам, истории и stash, чтобы нужный синтаксис был виден без прокрутки длинной статьи или повторного открытия учебной вкладки. На каждой карточке уже показано краткое описание рядом с командой — полезно, когда вы помните рабочий процесс, но не точные флаги, например --force-with-lease вместо --force, или хотите разобраться в различиях между git restore и git reset.
Копирование команд с сохранением шаблонных заполнителейИспользуйте копирование одним нажатием для команд вроде git checkout -b <branch>, git push -u origin <branch>, git log --oneline --graph --all или git restore --staged <file>, затем замените заполнители в терминале. Поскольку справочник работает в браузере и никакие данные коммитов или имена веток никуда не отправляются, безопасно копировать рядом с реальными хэшами, внутренними префиксами веток или названиями фич, которые ещё не были запушены.
Проверка опасных команд перед использованиемРаздел отмены собирает рабочие процессы с reset, clean, restore и force push, чтобы разрушительный характер был виден сразу. Перед выполнением git reset --hard HEAD~3 или git push --force сверьте текущую ветку через git status и состояние отслеживания удалённого репозитория через git rev-parse --abbrev-ref --symbolic-full-name @{u}, поскольку перезапись общей истории не может быть отменена другими участниками команды.
Сохранение сниппетов веток, тегов и stash как шаблоновКоманды вроде 'git switch -c feature/x', 'git tag -a v1.2 -m' и 'git stash push -m' повторяются от проекта к проекту с учётом командных соглашений о ветвлении или выпуске. Скопируйте их один раз во вводную документацию команды, операционный плашбук или конфигурацию pre-commit-хуков и пересматривайте при изменении поведения Git — например, когда проект требует --force-with-lease вместо простого --force на защищённых ветках.
Использование команд истории для чтения репозитория, а не его перезаписиЗапустите 'git log --oneline --graph --all', 'git blame -L' и 'git diff <branch>...', чтобы понять, кто что изменил, прежде чем начинать rebase или revert. Сначала прочитать дешевле, чем восстанавливаться после неудачной перезаписи истории, особенно в монорепозиториях, где случайный rebase через ветки фич может инвалидировать десятки открытых pull request.

Технический принцип

Git хранит каждое состояние проекта как граф объектов с адресацией по содержимому внутри .git/objects, где адресом является 40-символьный хэш SHA-1 (SHA-256 доступен опционально с Git 2.29 в экспериментальном формате объектов). Существует четыре типа объектов: blob хранит сырые байты файла, tree сопоставляет имена с blob'ами и поддеревьями, commit указывает на tree плюс родительские коммиты и метаданные автора, а tag — подписанный указатель на любой из перечисленных. Ветки и теги под refs/heads/, refs/remotes/ и refs/tags/ — это просто текстовые файлы, содержащие SHA, а HEAD — символическая ссылка, указывающая на текущую ветку.

Локальные изменения проходят через три области: рабочую директорию, индекс (также называемый областью подготовки, хранящийся в .git/index) и базу объектов. git add записывает хэши blob'ов в индекс, git commit замораживает индекс в новый объект tree и commit, а git checkout/switch обновляет индекс и рабочее дерево до целевого коммита. Слияния делятся на две категории: fast-forward просто продвигает указатель ветки, когда цель является прямым потомком, а трёхсторонние слияния (стратегия recursive или ort) вычисляют общего предка и создают merge-коммит с двумя родителями. git rebase переписывает историю, воспроизводя коммиты по одному на новое основание, создавая новые SHA.

Синхронизация с удалённым репозиторием работает по протоколу HTTPS smart protocol, SSH или устаревшему протоколу git://, обмениваясь pack-файлами, генерируемыми дельта-сжатием. После fetch Git хранит снимок под refs/remotes/origin/*, а reflog в .git/logs/ сохраняет 90-дневную историю отмен по умолчанию (gc.reflogExpire), поэтому даже reset --hard или неудачный rebase можно восстановить до того, как сборщик мусора удалит недостижимые объекты.
  • Модель объектов: blob, tree, commit, tag — адресация по SHA-1 (или SHA-256 с версии 2.29), хранение в виде отдельных файлов в .git/objects/xx/ или упакованных в .git/objects/pack/*.pack
  • Индекс/подготовка: .git/index — бинарный файл, сопоставляющий путь → хэш blob + информация stat; git add обновляет его, git commit замораживает в tree
  • Ссылки и HEAD: refs/heads/<branch>, refs/remotes/<remote>/<branch>, refs/tags/<tag> — обычные файлы, содержащие SHA; HEAD — символическая ссылка на текущую ветку
  • Стратегии слияния: fast-forward, когда цель является потомком, иначе трёхстороннее рекурсивное/ort-слияние с использованием merge base; --no-ff принудительно создаёт merge-коммит
  • Перезапись при rebase: git rebase воспроизводит коммиты на новое основание, создавая новые SHA и нарушая общую историю при push — поэтому --force-with-lease предпочтительнее --force
  • Восстановление через reflog: .git/logs/HEAD и логи по ссылкам хранят перемещения ссылок 90 дней (gc.reflogExpire); git reflog + git reset восстанавливает после деструктивных операций
  • Транспорт: smart HTTPS, SSH или git:// обмениваются pack-файлами через протокол upload-pack/receive-pack; неглубокие клоны используют --depth для ограничения истории

Примеры

Создать и переключиться на новую ветку

git checkout -b feature/login  # Создать и переключиться на новую ветку

Отменить изменения в рабочей директории

git restore filename  # Восстановить файл до последнего закоммиченного состояния

Просмотр истории коммитов

git log --oneline --graph --all  # Графически показать историю всех веток

Часто задаваемые вопросы

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

git reset --soft HEAD~1 оставляет изменения в индексе, чтобы вы могли закоммитить их заново; git reset --mixed HEAD~1 оставляет их в рабочей копии, но без индекса; git reset --hard HEAD~1 выбрасывает их совсем. Если коммит уже запушен, используйте git revert HEAD — он создаст новый коммит, отменяющий изменения, не переписывая историю.

В чём разница между git pull и git fetch?

git fetch только скачивает коммиты с удалённого репозитория в локальные ссылки — рабочую ветку он не трогает. git pull эквивалентен git fetch, за которым идёт git merge (или git rebase, если задан --rebase). Используйте fetch, когда хотите сначала посмотреть изменения сверху, прежде чем их вмерживать.

Как отменить локальные изменения файла?

git restore <file> сбрасывает незакоммиченные правки в рабочей копии; git restore --staged <file> убирает файл из индекса, не теряя его содержимого; git checkout HEAD -- <file> восстанавливает версию из последнего коммита. Для неотслеживаемых файлов используйте git clean -f или -fd, чтобы удалить и каталоги.

Когда выбирать rebase, а когда merge?

Rebase — когда вы хотите получить линейную историю на личной фича-ветке перед её вливанием. Merge — когда интегрируете общую ветку и важно сохранить реальную историю разработки. Никогда не делайте rebase коммитов, которые уже запушены в общую ветку, без согласия команды — это переписывает SHA и ломает чужие клоны.

Как посмотреть, что будет запушено?

git log @{u}.. показывает коммиты вашей ветки, которых нет в апстриме. git diff @{u} даёт совокупный diff. После git fetch команда git status относительно origin покажет, насколько вы впереди и позади.

Как восстановить удалённую ветку или потерянный коммит?

git reflog показывает все позиции, в которых был HEAD; найдите SHA нужного коммита и выполните git checkout <sha> или git branch <name> <sha>. Записи reflog по умолчанию хранятся около 90 дней до сборки мусора, так что лучше делать это сразу после ошибки.

Как безопаснее всего исправить коммит?

git commit --amend позволяет изменить сообщение последнего коммита или добавить забытые файлы. Команда переписывает SHA, поэтому делайте это только с локальными коммитами, которые ещё не были запушены. Если приходится править уже запушенный коммит, пушьте с --force-with-lease (а не --force), чтобы не затереть обновления коллег.

Похожие инструменты

Запрос HTTP-кодов состояния

Бесплатный онлайн-справочник кодов состояния HTTP: все стандартные коды от 1xx до 5xx с описанием. Поиск и фильтр по категориям для быстрого поиска кода.

Типы MIME

Бесплатный онлайн-справочник MIME-типов: соответствие между расширением файла и MIME-типом. Поиск и фильтр по категориям: документы, изображения, видео.

Запрос таблицы ASCII

Бесплатная онлайн-таблица ASCII: управляющие, печатные и расширенные символы с кодами. Ищите и фильтруйте значения ASCII для быстрого поиска нужного символа.

Генератор Cron-выражений

Бесплатный онлайн-инструмент для разбора и создания Cron-выражений. Визуальная настройка расписания и поддержка расширенного синтаксиса Quartz.

Инструмент поиска IP-адреса

Бесплатный онлайн-инструмент для определения вашего публичного IP-адреса и геолокации: страна, город и провайдер. Узнайте свой IP мгновенно в браузере.

Markdown-редактор

Бесплатный онлайн-редактор Markdown с предпросмотром в реальном времени, подсветкой синтаксиса и экспортом в HTML. Поддерживает таблицы, блоки кода и диаграммы.