Шпаргалка по командам Git

Далее

В Git около 150 подкоманд, и некоторые из них опасно похожи друг на друга, reset против restore, checkout против switch, rm против restore --staged. Этот справочник группирует команды, которые вы реально набираете, по ситуациям: повседневная работа, ветки, отмена ошибок и stash. Выберите нужную группу и скопируйте блок.

Как пользоваться шпаргалкой

  1. 1

    Выберите тему

    Повседневная работа, ветки, отмена или stash, каждой соответствует свой образ мышления.

  2. 2

    Пробегитесь по блоку

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

  3. 3

    Скопируйте нужную

    Вставьте в терминал, поправьте имя ветки или SHA коммита и запустите.

Почему команды путают даже опытных пользователей

Пользовательский слой (porcelain) Git разрастался постепенно, командой за командой. checkout перегрузили сразу двумя задачами, «переключить ветку» и «восстановить файл»; а reset находится где-то между «отбросить работу» и «передвинуть указатель ветки». Начиная с Git 2.23 появились более понятные глаголы:

Старое Новое (понятнее)
git checkout branch git switch branch
git checkout -b new git switch -c new
git checkout -- file git restore file
git checkout --staged file git restore --staged file

Безопасная лестница отмены

  1. Восстановить один файл: git restore path/to/file (не проиндексированный) или git restore --staged path/to/file (проиндексированный, но ещё не закоммиченный).
  2. Отменить последний коммит, сохранив изменения: git reset --soft HEAD~1.
  3. Отменить последний коммит и отбросить изменения: git reset --hard HEAD~1 (необратимо; убедитесь, что нет незакоммиченной работы).
  4. Откатить общий коммит: git revert <sha>, создаёт новый коммит, отменяющий старый; безопасно для уже отправленной истории.

Этикет работы со stash

  • Всегда делайте stash с сообщением: git stash push -m "wip: подключаю API".
  • Перед pop смотрите список через git stash list, безымянные stash-и быстро накапливаются.
  • git stash pop применяет и удаляет; git stash apply применяет и оставляет.

Восстановление

Потеряли коммит после hard reset? Скорее всего, он ещё в reflog. Выполните git reflog, чтобы увидеть все перемещения HEAD за последние 90 дней, и git reset --hard <sha>, чтобы вернуться к нужному состоянию.

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

Начиная с Git 2.23 (август 2019 года) проект разделил перегруженную команду checkout на две. switch переключает ветки, restore восстанавливает файлы. Обе по-прежнему существуют ради обратной совместимости, но их проще читать, когда позже просматриваешь историю команд в терминале.

reset перемещает указатель ветки (а при необходимости и рабочее дерево). revert создаёт новый коммит, отменяющий предыдущий, безопасно в общей ветке. checkout / restore меняют файлы в рабочем дереве, не переписывая историю.

Используйте git revert <sha>, чтобы добавить компенсирующий коммит, и отправьте именно его. Избегайте связки git reset --hard + git push --force в общих ветках, если команда явно не договорилась об этом.

Команды, это статический текст, отрисованный на странице. Выбранная тема отправляется на сервер только для показа соответствующих команд и попадает в ссылку страницы при переходе между двумя шагами. Она не сохраняется и не логируется.

Сопутствующие инструменты

Справочная таблица ASCII

Полная таблица ASCII от 0 до 127 с десятичным, шестнадцатеричным, восьмеричным и двоичным представлением, а также записью числовых ссылок HTML, включая NUL, LF и DEL.

Справочник сочетаний клавиш

Ищите документированные сочетания по умолчанию для VS Code, Chrome и Bash с GNU Readline в macOS, Windows и Linux.

Справочник символов HTML

Справочник HTML-сущностей с поиском, их именованными и числовыми кодами, а также копированием специальных символов и знаков одним кликом.

Шпаргалка по Markdown

Практический справочник Markdown с настоящим предпросмотром и готовыми для копирования примерами заголовков, списков, таблиц, кода, ссылок, изображений и синтаксиса GFM.

Счетчик FPS

Измерьте FPS браузера через requestAnimationFrame: сглаживание, минимальная и максимальная частота кадров, порог предупреждения и график по желанию. Работает локально, без загрузок и API.

Генератор EditorConfig

Создайте файл .editorconfig с вашими правилами стиля и размера отступа, конца строки, кодировки и пробелов для единообразного форматирования во всех IDE и редакторах.

Инструмент доступен на других языках