kb/workflow
Базовый цикл: правка файлов, `git add` для подготовки коммита, `git commit` для фиксации, `git status` чтобы посмотреть где находишься и `git log` чтобы посмотреть историю. Команды, которые используются каждый день.
Формат сообщения коммита `<type>(<scope>): <subject>`. Позволяет автоматически собирать changelog и выбирать semver-уровень при релизе. Стандарт от 2018, поддерживается большинством release-инструментов.
Команда переносит изменения файлов из рабочего дерева в индекс (staging area). Сама ничего не коммитит - только готовит, что попадёт в следующий коммит.
Фиксирует то, что лежит в индексе, как новый коммит-объект и передвигает текущую ветку на этот коммит. Без аргументов открывает редактор для сообщения; чаще всего вызывают с `-m`.
Переписывает последний коммит - меняет сообщение, подмешивает забытые правки, поправляет содержимое. Создаёт новый объект с новым SHA. Безопасен до push, опасен после.
Показывает различия между двумя версиями. Четыре основных режима: без флагов (working tree vs index), `--staged` (index vs HEAD), `HEAD` (working tree vs HEAD), `<A> <B>` (commit vs commit). Плюс опции для фильтрации, форматов и сравнения веток.
Обходит граф коммитов и печатает каждый. По умолчанию начинает с HEAD и идёт по родителям. Десяток флагов покрывает 95% сценариев просмотра истории.
Прячет незакоммиченные правки в специальный стек, очищает рабочее дерево до состояния HEAD. Полезно, когда нужно срочно переключиться на другую ветку, но коммитить сейчас рано.
Показывает разницу между тремя зонами Git: что изменено в рабочем дереве, что застейджено в индексе, какая ветка активна. Самая безвредная команда - ничего не меняет, можно жать сколько хочешь.
Коммит, который делает одну логически целостную правку. Каждый атомарный коммит можно безопасно revert'нуть, на каждом сборка и тесты проходят. Основа здоровой истории Git.
Конвенция версионирования `MAJOR.MINOR.PATCH`. PATCH - обратно- совместимые баг-фиксы, MINOR - новая совместимая функциональность, MAJOR - ломающие изменения. Принят большинством библиотек.