Как проверить, был ли коммит в Git сделан определенным автором

GitGitBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии (лабораторной работе) вы научитесь проверять, был ли коммит в Git сделан определенным автором. Мы рассмотрим два основных метода: фильтрацию истории коммитов с использованием команды git log --author для просмотра коммитов определенного человека и использование команды git show с хэшем коммита для проверки деталей об авторе конкретного коммита.

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git(("Git")) -.-> git/SetupandConfigGroup(["Setup and Config"]) git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git/SetupandConfigGroup -.-> git/config("Set Configurations") git/BasicOperationsGroup -.-> git/add("Stage Files") git/BasicOperationsGroup -.-> git/commit("Create Commit") git/BasicOperationsGroup -.-> git/diff("Compare Changes") git/BranchManagementGroup -.-> git/log("Show Commits") subgraph Lab Skills git/config -.-> lab-560070{{"Как проверить, был ли коммит в Git сделан определенным автором"}} git/add -.-> lab-560070{{"Как проверить, был ли коммит в Git сделан определенным автором"}} git/commit -.-> lab-560070{{"Как проверить, был ли коммит в Git сделан определенным автором"}} git/diff -.-> lab-560070{{"Как проверить, был ли коммит в Git сделан определенным автором"}} git/log -.-> lab-560070{{"Как проверить, был ли коммит в Git сделан определенным автором"}} end

Использование git log --author для фильтрации

На этом этапе мы научимся фильтровать историю коммитов с использованием флага --author в команде git log. Это полезно, когда вы хотите увидеть только коммиты, сделанные определенным человеком.

Сначала убедимся, что мы находимся в директории нашего проекта. Откройте терминал и введите:

cd ~/project/my-time-machine

Теперь используем команду git log с флагом --author, чтобы увидеть коммиты, сделанные "Jane Doe". Помните, мы настроили имя автора на предыдущем этапе настройки.

git log --author="Jane Doe"

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

commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (HEAD -> master)
Author: Jane Doe <[email protected]>
Date:   Mon Aug 7 10:00:00 2023 +0000

    Send a message to the future

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

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

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

Использование git show для проверки автора

На этом этапе мы будем использовать команду git show для просмотра деталей конкретного коммита, включая информацию об авторе. Это полезно, когда вы хотите подробно изучить один коммит.

Убедитесь, что вы по-прежнему находитесь в директории ~/project/my-time-machine.

Сначала получим хэш коммита (уникальный идентификатор) нашего коммита. Мы можем использовать git log --oneline, чтобы получить более краткую версию журнала:

git log --oneline

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

a1b2c3d (HEAD -> master) Send a message to the future

Первая часть, a1b2c3d (ваш хэш будет другим), это сокращенный хэш коммита. Скопируйте этот хэш.

Теперь используйте команду git show, за которой следует скопированный вами хэш коммита:

git show <paste_your_commit_hash_here>

Например, если ваш хэш был a1b2c3d, вы должны ввести:

git show a1b2c3d

В выводе будут показаны детали этого конкретного коммита, включая автора:

commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (HEAD -> master)
Author: Jane Doe <[email protected]>
Date:   Mon Aug 7 10:00:00 2023 +0000

    Send a message to the future

diff --git a/message.txt b/message.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/message.txt
@@ -0,0 +1 @@
+Hello, Future Me

Вы можете четко увидеть строку Author:, которая подтверждает, что этот коммит был сделан "Jane Doe". Команда git show - это мощный способ изучить отдельные коммиты, узнать, какие файлы были изменены, и просмотреть содержимое этих изменений.

Нажмите q, чтобы выйти из просмотра.

Тестирование с несколькими авторами

На этом этапе мы имитируем ситуацию, когда другой автор делает коммит, чтобы увидеть, как работает команда git log --author при наличии нескольких участников проекта.

Сначала изменим настройки автора Git для следующего коммита. Мы можем сделать это временно для данного репозитория:

git config user.name "John Smith"
git config user.email "[email protected]"

Теперь создадим новый файл от имени "John Smith":

echo "Hello from John" > johns-file.txt

Добавим новый файл в область подготовленных изменений (staging area):

git add johns-file.txt

И зафиксируем изменения от имени "John Smith":

git commit -m "Add a file from John"

Вы должны увидеть вывод, показывающий, что новый коммит был создан "John Smith".

Теперь используем git log, чтобы увидеть полную историю:

git log

Вы увидите два коммита: один от "Jane Doe" и один от "John Smith".

Теперь отфильтруем журнал, чтобы показать только коммиты от "Jane Doe":

git log --author="Jane Doe"

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

Наконец, отфильтруем журнал, чтобы показать только коммиты от "John Smith":

git log --author="John Smith"

В этом случае будет показан только второй коммит.

Это демонстрирует, как эффективно команда git log --author фильтрует коммиты по автору, что является важным инструментом для отслеживания вклада участников в совместных проектах.

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

Резюме

В этом практическом занятии (лабораторной работе) мы научились проверять, был ли коммит в Git сделан определенным автором. Сначала мы использовали команду git log --author для фильтрации истории коммитов и отображения только тех коммитов, которые были сделаны определенным автором. Это показало, как эта команда полезна для фокусировки на индивидуальном вкладе в рамках командной работы.

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