Просмотр коммитов в определенном диапазоне дат

Beginner

This tutorial is from open-source community. Access the source code

Введение

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

Клонирование Git-репозитория

Для начала исследования возможностей фильтрации по диапазону дат в Git нам сначала нужен Git-репозиторий, с которым мы будем работать. Мы будем использовать репозиторий git-playground, предоставленный LabEx.

Начнем с клонирования репозитория:

  1. Откройте терминал в виртуальной машине LabEx.
терминал
  1. Выполните следующую команду для клонирования репозитория:
git clone https://github.com/labex-labs/git-playground

Вы должны увидеть вывод, похожий на следующий:

Cloning into 'git-playground'...
remote: Enumerating objects: 8, done.
remote: Counting objects: 100% (8/8), done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 8 (delta 0), reused 8 (delta 0), pack-reused 0
Receiving objects: 100% (8/8), done.
  1. Перейдите в директорию репозитория:
cd git-playground

Теперь, когда у нас есть репозиторий на локальной машине, мы можем приступить к изучению истории коммитов (коммитов - это записи о внесенных изменениях в репозиторий).

Исследование базовой команды git log

Теперь, когда мы клонировали репозиторий, давайте узнаем, как просматривать историю коммитов (коммитов - это записи о внесенных изменениях в репозиторий) с помощью команды git log.

Команда git log отображает список всех коммитов в репозитории, начиная с самого последнего. Каждая запись о коммите включает в себя:

  • Уникальный хэш коммита (идентификатор)
  • Информацию об авторе
  • Дату и время коммита
  • Сообщение коммита

Давайте посмотрим базовую историю коммитов:

git log

Вы должны увидеть вывод, похожий на следующий:

commit d22f46ba8c2d4e07d773c5126e9c803933eb5898 (HEAD -> master, origin/master, origin/feature-branch, origin/HEAD)
Author: Hang <huhuhang@users.noreply.github.com>
Date:   Wed Apr 26 14:16:25 2023 +0800

    Added file2.txt

commit cf80005e40a3c661eb212fcea5fad06f8283f08f
Author: Hang <huhuhang@users.noreply.github.com>
Date:   Wed Apr 26 14:16:25 2023 +0800

    Added file1.txt

commit b00b9374a7c549d1af111aa777fdcc868d8a2a01
Author: Hang <huhuhang@gmail.com>
Date:   Wed Apr 26 14:16:00 2023 +0800

    Initial commit

Если вывод длинный, вы можете перемещаться по нему, используя:

  • Нажмите Space, чтобы перейти вперед
  • Нажмите b, чтобы перейти назад
  • Нажмите q, чтобы выйти из просмотра журнала

Обратите внимание, что каждый коммит имеет уникальный идентификатор (длинная шестнадцатеричная строка), информацию об авторе, дату и время коммита, а также сообщение, описывающее, какие изменения были внесены.

Просмотр коммитов в определенном диапазоне дат

Теперь мы узнаем, как фильтровать коммиты (коммиты - это записи о внесенных изменениях в репозиторий) по определенным датам. Git предоставляет два полезных параметра для этой цели:

  • --since или --after: Показывает коммиты, более свежие, чем определенная дата
  • --until или --before: Показывает коммиты, более старые, чем определенная дата

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

Давайте посмотрим все коммиты, которые произошли с 25 апреля 2023 года по 27 апреля 2023 года:

git log --since='Apr 25 2023' --until='Apr 27 2023'

Эта команда отобразит все коммиты, сделанные с 25 по 27 апреля 2023 года. Вывод должен выглядеть так:

commit d22f46ba8c2d4e07d773c5126e9c803933eb5898 (HEAD -> master, origin/master, origin/feature-branch, origin/HEAD)
Author: Hang <huhuhang@users.noreply.github.com>
Date:   Wed Apr 26 14:16:25 2023 +0800

    Added file2.txt

commit cf80005e40a3c661eb212fcea5fad06f8283f08f
Author: Hang <huhuhang@users.noreply.github.com>
Date:   Wed Apr 26 14:16:25 2023 +0800

    Added file1.txt

commit b00b9374a7c549d1af111aa777fdcc868d8a2a01
Author: Hang <huhuhang@gmail.com>
Date:   Wed Apr 26 14:16:00 2023 +0800

    Initial commit

Git поддерживает множество форматов дат, в том числе:

  • "YYYY-MM-DD" (например, 2023-04-25)
  • "Month DD YYYY" (например, Apr 25 2023)
  • "DD Month YYYY" (например, 25 Apr 2023)

Попробуйте другой формат даты, чтобы узнать, есть ли коммиты в другом диапазоне:

git log --since='2023-04-20' --until='2023-04-24'

Эта команда может не вернуть никаких результатов, если в этот период не было сделано ни одного коммита, что абсолютно нормально.

Использование относительных дат и параметров форматирования

Git также поддерживает относительные даты, что может быть очень удобно для быстрого просмотра недавней активности.

Давайте посмотрим все коммиты за последние 12 недель:

git log --since='12 weeks ago'

В зависимости от того, когда вы запускаете эту команду, вы можете увидеть все коммиты или только некоторые из них, если они попадают в этот временной интервал.

Другие полезные форматы относительных дат включают:

  • "X days ago" (X дней назад)
  • "X months ago" (X месяцев назад)
  • "yesterday" (вчера)
  • "last week" (прошлой недели)

Давайте попробуем посмотреть коммиты за прошлый год:

git log --since='1 year ago'

Эта команда покажет все коммиты, сделанные за прошлый год.

Дополнительные параметры форматирования

Команда git log предоставляет различные параметры форматирования для настройки вывода. Вот несколько полезных из них:

  1. Чтобы отобразить более компактный журнал, где каждый коммит отображается в одной строке:
git log --oneline --since='Apr 25 2023' --until='Apr 27 2023'

Вывод будет выглядеть так:

d22f46b (HEAD -> master, origin/master, origin/feature-branch, origin/HEAD) Added file2.txt
cf80005 Added file1.txt
b00b937 Initial commit
  1. Чтобы увидеть файлы, которые были изменены в каждом коммите:
git log --name-status --since='Apr 25 2023' --until='Apr 27 2023'

Эта команда показывает статус файлов, которые были изменены в каждом коммите, что может быть полезно для понимания, что именно было изменено.

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

Резюме

В этом практическом занятии (лабораторной работе) вы узнали, как просматривать коммиты в определенном диапазоне дат с использованием Git. Вы изучили:

  • Как клонировать репозиторий Git на локальную машину
  • Как использовать базовую команду git log для просмотра истории коммитов
  • Как фильтровать коммиты на основе определенных диапазонов дат с использованием параметров --since и --until
  • Как использовать относительные даты, такие как "12 weeks ago" (12 недель назад), для более гибкой фильтрации
  • Как настроить вывод команды git log с помощью параметров форматирования

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