Как просмотреть git log, содержащий только коммиты одного пользователя?
При использовании git log, как можно отфильтровать по пользователю, чтобы видеть только его коммиты?
Чтобы просмотреть журнал коммитов только одного пользователя, используйте опцию --author с командой git log. Вы можете фильтровать по имени автора или адресу электронной почты с помощью git log --author="John Doe" или git log --author="john.doe@example.com" соответственно. Эта мощная возможность фильтрации позволяет сосредоточиться на конкретных вкладах и проанализировать индивидуальные рабочие паттерны в вашем репозитории.
Содержание
- Базовая фильтрация по автору
- Фильтрация по адресу электронной почты
- Использование регулярных выражений
- Фильтрация по нескольким авторам
- Исключение конкретных авторов
- Дополнительные опции фильтрации
- Практические примеры
Базовая фильтрация по автору
Самый простой способ фильтровать журнал git по автору — использовать опцию --author. Эта опция принимает строку, которая может быть обычным текстом или шаблоном регулярного выражения, соответствующим имени автора.
git log --author="John Doe"
Эта команда покажет все коммиты, имя автора которых содержит “John Doe”. По умолчанию фильтрация не чувствительна к регистру, поэтому она будет соответствовать различиям в написании заглавных букв. Согласно официальной документации git, эта опция ограничивает вывод коммитами, строки заголовка автора которых соответствуют указанному шаблону.
Для поиска коммитов “Adam Dymitruk” проще ввести git log --author="Adam" или использовать фамилию, если есть несколько участников с одним и тем же именем источник.
Фильтрация по адресу электронной почты
Фильтрация по адресу электронной почты часто более надежна, чем фильтрация по имени, потому что:
- Она не путается, когда авторы используют различные имена на разных компьютерах
- Она предотвращает проблему, при которой фильтрация по “authorname” также покажет результаты для “authorname2” и т.д.
git log --author="john.doe@example.com"
Как отмечается в обсуждении на Stack Overflow, фильтрация по адресу электронной почты имеет эти преимущества источник.
Фильтрация по адресу электронной почты особенно полезна в командах, где участники могут использовать разные имена, но иметь единые адреса электронной почты во всех коммитах.
Использование регулярных выражений
Опция --author в Git поддерживает регулярные выражения для более сложных шаблонов фильтрации. Вы можете использовать регулярные выражения для соответствия частичным именам, нескольким шаблонам или конкретным форматам.
# Найти авторов с "John" в имени
git log --author="John"
# Найти авторов с "Doe" в имени
git log --author="Doe"
# Использовать расширенные регулярные выражения для более сложных шаблонов
git log --author="John|Jane" --grep-extended-regexp
Согласно документации git, опция --author использует регулярные выражения для сопоставления, и при наличии более одного --author=<pattern>, выбираются коммиты, автор которых соответствует любому из шаблонов.
Для расширенных возможностей регулярных выражений может потребоваться включить расширенные регулярные выражения:
git log --author="Andrew|Stephen" --since="2016-09-20"
В некоторых системах может потребоваться установить git config --global grep.extendedRegexp true для правильной работы расширенных регулярных выражений источник.
Фильтрация по нескольким авторам
Вы можете легко сопоставлять нескольких авторов, так как регулярные выражения являются базовым механизмом для этого фильтра. Чтобы перечислить коммиты Джонатана или Адама, вы можете сделать следующее:
git log --author="Jonathan|Adam"
Журнал Git может принимать несколько опций, поэтому вы можете комбинировать их в соответствии с вашими потребностями. При наличии более одного --author=<pattern>, выбираются коммиты, автор которых соответствует любому из <pattern> источник.
Для более сложной фильтрации по нескольким авторам вы можете использовать:
git log --author="John Doe" --author="Jane Smith"
Это покажет коммиты от любого из этих авторов.
Исключение конкретных авторов
Иногда вам нужно исключить коммиты определенных авторов. Этого можно достичь с помощью регулярных выражений в сочетании с переключателем --perl-regexp и отрицательными просмотрами вперед (negative lookaheads).
# Исключить коммиты Стивена или Джона
git log --author='^(?!Stephen|John).*$' --perl-regexp
Как объясняется в блоге /code-comments/, вы можете исключить коммиты этих авторов с помощью регулярного выражения в сочетании с --perl-regexp (для получения отрицательных просмотров вперед) источник.
Другой подход, показанный на Stack Overflow:
git log --perl-regexp --author='(?<!(john|paul|ringo))@'
Это использует отрицательный просмотр назад (negative lookbehind) для исключения определенных авторов.
Дополнительные опции фильтрации
Вы можете комбинировать фильтрацию по автору с другими опциями git log для получения более точных результатов:
# Фильтрация по автору и диапазону дат
git log --author="John Doe" --since="2023-01-01" --until="2023-12-31"
# Фильтрация по автору и отображение только хэшей коммитов
git log --author="John Doe" --pretty=format:"%H"
# Фильтрация по автору и отображение статистики
git log --author="John Doe" --stat
# Фильтрация по автору и ограничение количества коммитов
git log --author="John Doe" --oneline -10
Команда git log высоко настраиваема и может быть комбинирована с различными опциями форматирования для отображения информации наиболее полезным для вас способом.
Практические примеры
Вот несколько практических примеров использования фильтрации по автору в реальных сценариях:
Пример 1: Просмотр по имени
git log --author="John Doe"
Пример 2: Просмотр по email
git log --author="john.doe@example.com"
Пример 3: Фильтрация по диапазону дат
git log --author="John Doe" --since="2023-01-01" --until="2023-12-31"
Пример 4: Несколько авторов
git log --author="John|Jane"
Пример 5: Исключение авторов
git log --author='^(?!Stephen|John).*$' --perl-regexp
Пример 6: Комбинирование с другими опциями
git log --author="John Doe" --oneline --graph --decorate
Эти примеры демонстрируют гибкость фильтрации журнала git по автору и то, как ее можно адаптировать к различным потребностям рабочего процесса.
Источники
- How to filter Git commit logs by author | LabEx
- How to use the --author option with git log command | LabEx
- How can I view a git log of just one user’s commits? - Stack Overflow
- Git - git-log Documentation
- Git - Filtering the Commit History - GeeksforGeeks
- How Can I View a Git Log of Just One User’s Commits? | Better Stack Community
- How to filter commits by author in Git log - Sling Academy
- Filtering by Author Name - Adam Dymitruk
- GIT: filter log by group of authors - Stack Overflow
- filter git commits by author | /code-comments/
- Other - “git log” does not work for multiple author filtering | The FreeBSD Forums
- Git - git-shortlog Documentation
- Useful tricks you might not know about git log
Заключение
Фильтрация журнала git по автору — это мощная техника, которая помогает сосредоточиться на конкретных вкладах в вашем репозитории. Ключевые выводы:
- Используйте
git log --author="name"для фильтрации по имени автора - Предпочитайте фильтрацию по email (
git log --author="email@example.com") для более надежных результатов - Используйте регулярные выражения для сложных шаблонов фильтрации
- Комбинируйте фильтрацию по автору с другими опциями git log для всестороннего анализа
- Используйте
--perl-regexpдля расширенных шаблонов регулярных выражений, включая исключения
Освоив эти техники фильтрации, вы сможете эффективно анализировать вклады в код, отслеживать индивидуальную производительность и получать ценные инсайты в паттерны разработки вашей команды. Экспериментируйте с разными подходами фильтрации, чтобы найти наиболее полезный способ изучения истории вашего проекта.