如何检查 Git 提交是否由特定作者完成

GitGitBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个实验中,你将学习如何检查一个 Git 提交是否由特定作者完成。我们将探讨两种主要方法:使用 git log --author 过滤提交历史,以查看特定个人的提交;以及使用 git show 结合提交哈希值,来验证单个提交的作者详细信息。

通过实践练习,你将在一个示例 Git 仓库中练习应用这些命令。我们将演示如何按作者姓名过滤提交,然后使用 git show 检查特定提交的作者信息,确保你能有效地识别 Git 历史中任何给定更改的贡献者。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/SetupandConfigGroup(["Setup and Config"]) git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) 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 进行过滤

在这一步中,你将学习如何使用 git log 命令结合 --author 选项来过滤提交历史。当你只想查看特定人员所做的提交时,这个方法非常有用。

首先,确保你位于项目目录中。打开终端并输入:

cd ~/project/my-time-machine

现在,让我们使用带有 --author 选项的 git log 命令,来查看由“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

将新文件添加到暂存区:

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 命令,以查看该提交的详细信息,包括作者姓名和邮箱,这为验证特定更改的作者提供了一种方法。最后,你通过多作者场景测试了这些方法,确认了它们在区分不同人员贡献方面的有效性。