Команды Git

git log

git log: показать историю (англ. logжурнал) коммитов.

Команда git log используется для вывода истории коммитов Git-репозитория. Она показывает список всех коммитов, добавленных в репозиторий, вместе с информацией о каждом: хешем коммита, автором, датой и сообщением коммита. Эта команда невероятно полезна для изучения истории проекта, отслеживания изменений во времени и поиска конкретных коммитов, которые добавили новые возможности или внесли ошибки.

По умолчанию git log выводит коммиты в обратном хронологическом порядке — от новых к старым. Каждый коммит имеет уникальный хеш — строку из 40 символов, которая однозначно его идентифицирует. Сообщение коммита кратко описывает внесённые изменения и помогает понять цель каждого сохранения.

В git log есть много опций для настройки вывода: например, фильтрация по автору или диапазону дат, показ только определённых веток или отображение изменений, внесённых в каждом коммите. Умение эффективно использовать git log здорово помогает ориентироваться в истории Git-репозитория и понимать её.

Некоторые команды Git, например git log, могут переводить терминал в режим пейджера (pager), который предназначен для просмотра длинных списков. В этом режиме можно прокручивать вывод с помощью клавиш и на клавиатуре (или PageUp и PageDown для быстрой прокрутки). Чтобы выйти из режима пейджера, нажми q.

Примеры

Показать историю коммитов в стандартном виде:

git log
Результат:
commit c9dfc6eeeeb49a9661f39f80c587e9cc10a12c70 (HEAD -> main)
Merge: c369baa 2a0c1b5
Author: Elon Tusk <elon@dix.com>
Date:   2025-11-12
 
    Merge branch 'feature/cart' into main
 
commit c369baab2bd17ec1023a7af5f967b0fac8372d17
Author: Elon Tusk <elon@dix.com>
Date:   2025-11-12
 
    Update main branch
 
commit 2a0c1b53f2ce8176a93000e33226bb637f31d864 (feature/cart)
Author: Elon Tusk <elon@dix.com>
Date:   2025-11-12
 
    Add cart total calculation
 
commit 39c461a87ac0d283dd892b7abe74fa61175f71a8
Author: Elon Tusk <elon@dix.com>
Date:   2025-11-12
 
    Add cart model
 
commit 8ca0133bc67908e5ac49d452aaa8e00a52d18590
Author: Elon Tusk <elon@dix.com>
Date:   2025-11-12
 
    Initial commit

Показать историю с сокращёнными хешами коммитов в упрощённом формате:

git log --oneline
Результат:
c9dfc6e (HEAD -> main) Merge branch 'feature/cart' into main
c369baa Update main branch
2a0c1b5 (feature/cart) Add cart total calculation
39c461a Add cart model
8ca0133 Initial commit

Показать историю с графическим отображением структуры веток:

git log --oneline --graph
Результат:
*   c9dfc6e (HEAD -> main) Merge branch 'feature/cart' into main
|\
* | c369baa Update main branch
| * 2a0c1b5 (feature/cart) Add cart total calculation
| * 39c461a Add cart model
|/
* 8ca0133 Initial commit

Показать историю коммитов в кастомном формате: с сокращённым хешем коммита, датой автора, темой и информацией о ветках. Для настройки вывода можно использовать множество заполнителей (плейсхолдеров). Если понадобится, полный список есть в документации Git.

git log --pretty=format:"%h %ad | %s%d [%an]"

То же самое с более современным и коротким синтаксисом:

git log --format="%h %ad | %s%d [%an]"
Результат:
c9dfc6e 2025-11-12 | Merge branch 'feature/cart' into main (HEAD -> main) [Elon Tusk]
c369baa 2025-11-12 | Update main branch [Elon Tusk]
2a0c1b5 2025-11-12 | Add cart total calculation (feature/cart) [Elon Tusk]
39c461a 2025-11-12 | Add cart model [Elon Tusk]
8ca0133 2025-11-12 | Initial commit [Elon Tusk]

Показать историю коммитов для конкретного файла:

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

git log -- path/to/file.txt

Показать коммиты за определённый период времени:

git log --since="2023-01-01" --until="2023-01-31"

Показать историю коммитов для конкретной ветки:

git log new-blog-design-branch

Показать историю коммитов между двумя коммитами:

git log 9ds73k2..5ka4j3d