Введение
Краткое описание команд git status, git log, git tag и git blame с примерами основного использования.

Когда у вас есть Git-репозиторий с некоторой историей, большая часть повседневной работы — это не изменение файлов, а понимание их текущего и прошлого состояния. Прежде чем выполнить коммит, пуш или откат, обычно нужно ответить на такие вопросы: Что я изменил, но ещё не сохранил? Кто написал эту строку и зачем? Когда была внесена эта ошибка? К какому релизу относится этот коммит?
Этот раздел руководства охватывает четыре команды, к которым чаще всего обращаются при изучении репозитория, а не при его изменении:
| Команда | На что отвечает | Область |
|---|---|---|
git status | Что изменилось с момента последнего коммита и что подготовлено к коммиту? | Рабочий каталог + область подготовки |
git log | Какова история коммитов? | Только зафиксированные снимки |
git tag | Какие коммиты являются значимыми (например, релизы)? | Именованные указатели на коммиты |
git blame | Кто последним изменял каждую строку и в каком коммите? | Авторство каждой строки в одном файле |
Ниже приведено краткое описание каждой команды с быстрым примером. На следующих страницах подробно рассматривается каждый параметр.
git status
Команда git status отображает состояние рабочего каталога и области подготовки, позволяя видеть, какие изменения подготовлены к следующему коммиту и какие файлы ещё не отслеживаются Git. Она не показывает историю коммитов — только разницу между текущими файлами и последним коммитом.
Запустите её внутри любого репозитория:
$ git status
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: index.html
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
modified: style.css
Untracked files:
(use "git add <file>..." to include in what will be committed)
notes.txtЗдесь index.html подготовлен к коммиту (войдёт в следующий коммит), style.css изменён, но не подготовлен, а notes.txt — совершенно новый и неотслеживаемый файл. Возьмите за привычку запускать git status перед каждым коммитом, чтобы случайно не зафиксировать или не забыть какой-либо файл.
git log
Команда git log исследует зафиксированную историю репозитория и помогает найти конкретную версию проекта. Она перечисляет, фильтрует и ищет коммиты — но работает только с зафиксированной историей, поэтому незафиксированные изменения в ней не появятся.
$ git log --oneline -3
9a3c1f4 (HEAD -> main) Fix navbar alignment on mobile
1d72b08 Add contact form validation
f0e5a91 Initial commitФлаг --oneline сжимает каждый коммит до короткого хеша и темы. Можно фильтровать по автору (--author), по дате (--since, --until) или по содержимому (-S "searchterm"), чтобы точно определить, когда произошло изменение. Для детального просмотра одного коммита используйте git log вместе с git show.
git tag
Теги — это ссылки, указывающие на конкретные значимые точки в истории Git. Их основное назначение — отметить релиз, например v1.0.0. В отличие от ветки, тег не перемещается при добавлении новых коммитов; после создания он постоянно указывает на один и тот же снимок.
$ git tag v1.0.0 # create a lightweight tag on the current commit
$ git tag # list existing tags
v1.0.0
$ git tag -a v1.1.0 -m "Release 1.1.0" # create an annotated tag with a messageЛёгкий тег — это просто имя для коммита, тогда как аннотированный тег (-a) также хранит имя автора, дату и сообщение — аннотированные теги рекомендуются для релизов. Теги не отправляются автоматически; поделиться ими можно с помощью git push origin v1.0.0 (или git push --tags).
git blame
Команда git blame показывает метаданные об авторе каждой строки файла: коммит, автора и дату последнего изменения этой строки. Это основной инструмент для понимания того, почему существует конкретная строка и к кому следует обратиться по этому поводу.
$ git blame -L 1,3 index.html
9a3c1f4a (Jane Doe 2024-03-12 10:22:01 +0000 1) <!DOCTYPE html>
1d72b08c (John Roe 2024-02-28 14:05:33 +0000 2) <html lang="en">
9a3c1f4a (Jane Doe 2024-03-12 10:22:01 +0000 3) <head>Флаг -L 1,3 ограничивает вывод строками 1–3. Каждая строка снабжена префиксом в виде короткого хеша коммита, автора и временной метки последнего изменения. Чтобы подробнее изучить один из этих коммитов, скопируйте его хеш в git show или git log.
Изучение vs. изменение
Полезная ментальная модель: эти команды работают в режиме только для чтения. Ни git status, ни git log, ни git tag (при перечислении), ни git blame не изменяют файлы или историю — они только сообщают о состоянии. Это делает их безопасными для запуска в любое время. Когда вы действительно хотите изменить записанное, используйте другие инструменты, например git commit, git checkout или git diff для предварительного просмотра изменений.