如何使用 git-blame?
Git 为我们提供了各种检查 git 存储库的方法。我们可以获得完整的提交历史细节,修改后初始代码如何演变,修改细节包括作者姓名、修改时间、修改代码。 git 为我们提供的一些用于检查和跟踪 git 存储库的命令如下:
- git status:它显示了 git 存储库的当前状态。如果文件被跟踪、未跟踪、暂存或未暂存等,它会告知有关文件的信息。
- git log:它告诉有关提交历史的详细信息。
- git tag:它有助于在特定提交的 git 提交历史记录中创建检查点,稍后可以使用 git show 命令查看这些检查点。
此外,还有另一个强大的 git 命令来检查 git 存储库,即git blame命令。
Highlights:
- What is Git Blame
- Syntax and Usage
- Command Line And GUI Based Approach
混帐-责备
git blame 命令显示最后修改或添加给定文件中每一行代码的作者的详细信息以及修改的提交 id。 提交 ID 可以与 git log 命令一起使用以获取提交的详细信息。稍后将在本文中演示。
我们可以使用 git blame 命令识别最后一个在文件中进行更改或添加给定代码行的人的姓名和电子邮件 ID。这将有助于我们联系到那个人,并在某些情况下向他询问那段代码及其功能。
句法:
git blame [options]
示范:
假设在 git 存储库中,我们必须在存储库的给定文件中识别给定代码行的作者详细信息和提交信息。同样如下所示。下面通过示例说明了该命令
第 1 步:移动到一个空文件夹并使用空的 git 存储库对其进行初始化。
第 2 步:克隆您想要获取信息的存储库。在这里,我从 GitHub 克隆了一个著名的存储库create-react-app 。确保将目录更改为克隆的存储库。
第三步:获取作者名和提交信息,如下图执行git blame命令。将
git blame
第 4 步:在这里,我需要文件 CONTRIBUTING.md 的详细信息,该文件位于我当前所在的同一目录中。所以,我将执行以下命令:
git blame CONTRIBUTING.md
输出:如下所示:
Tip: Observe that the last column of output displays the line number along with the code on that line.
输出研究:
让我们检查输出的第一行:
Commit Id Author Name Timestamp Code 46cf3fc43 Dan Abramov 2016-09-02 14:29:08 +0100 # Contributing to Create React App
- 提交 ID: 它是修改此行的最后一次提交的提交 ID。在接下来的几行中,我们将使用它来获取提交的详细信息。
- 作者姓名:这是最后修改给定代码行的作者的姓名。我们将看到如何获取作者的电子邮件 ID 而不是作者的姓名。
- 时间戳: 它是以标准表示法表示提交的日期和时间。我们可以使用 -t 选项获取原始时间戳,如下所示:
git blame -t CONTRIBUTING.md
输出如下所示:
查看提交详细信息:为了查看提交详细信息,我们将使用我们想要详细信息的提交 ID 执行 git log 命令。因此,从 git blame 命令的先前输出中复制提交 ID。就我而言,我想要 CONTRIBUTING.md 文件第一行的提交详细信息,因此我将从 git blame 命令的先前输出中复制提交 ID。它的提交 ID 是46cf3fc43。
现在,执行以下命令。将
git log -p
在我的情况下,命令如下:
git log -p 46cf3fc43
git log 命令有助于查看提交历史。 -p 或 –patch 选项在提供的提交 ID 的提交中显示作者详细信息和代码中的更改(添加或删除)。
带有 git blame 的选项: Git 通过git blame命令提供了各种选项,用于查看文件中代码修改的详细信息。下面给出了一些常用的选项:
查看一系列行的输出
git blame -L start-line,end-line
下面的命令显示了第 2 到第 5 行的输出,包括第 2 行到第 5 行。
git blame -L 2,5 CONTRIBUTING.md
输出如下所示:
Note: You will get the same output for command – git blame -L 4,+3 README.md. Here 4,+3 signifies output for 3 lines starting from the fourth line.
查看作者电子邮件 ID
git blame -e CONTRIBUTING.md
上面的命令将在结果中显示作者的电子邮件 ID,而不是作者的姓名。输出如下所示:
查看不早于给定时间的更改
git blame --since=3.months-- CONTRIBUTING.md
上面的命令用于查看文件 CONTRIBUTING.md 的提交不超过 3 个月的 git blame 输出。输出如下所示:
在上面的命令中,我们可以看到它显示了几个提交 id 以^ 开头的提交。插入符号 符号表示在指定时间之前进行的提交,在我们的例子中是三个月。因此,我们需要从输出中过滤掉它们。为了解决这个问题,我们可以修改我们的代码如下:
git blame --since=3.months -- CONTRIBUTING.md | grep -v '^\^'
上面的代码只是在删除以 ^ 符号开头的提交后过滤输出。因此,输出显示提交时间不超过三个月(从代码执行开始)。结果如下所示:
命令行的替代选项(基于 GUI): Git 托管站点,如 GitHub、Bitbucket、GitLab 为 git blame 提供 GUI 显示,可以清楚地显示文件中的修改历史。
示例: GitHub
第 1 步:导航到要查看其修改历史记录的文件,然后单击Blame选项,如下所示。
第 2 步:输出结构如下图所示:
Hence, we saw that git blame is a very useful command in inspecting a repository. It gives a great insight into the commit history and can be used along with other git commands to get desired results.