Git基础之提交消息模板

Author:onceday date:2024年1月26日

满满长路有人对你微笑过嘛…

全系列文章可查看专栏: Git使用记录_Once_day的博客-CSDN博客

1. 设置提交信息
1.1 设置用户名和邮箱信息

Git 允许您在不同的层级设置配置参数,这些层级包括:系统级别(影响计算机上的所有用户),全局级别(影响一个用户的所有仓库),和本地级别(只影响一个特定的仓库)。配置信息通常存储在以下文件中:

  • 系统级别: /etc/gitconfigC:\ProgramData\Git\config(Windows)
  • 全局级别: ~/.gitconfig~/.config/git/config
  • 本地级别: .git/config 在你的Git仓库目录中

以下是如何设置用户名、邮箱和编辑器的步骤:

(1) 全局级别,对于全局设置,即你希望在你所有的Git仓库中使用同样的用户名和邮箱,你可以使用 git config --global 命令。例如:

git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"

(2) 本地级别,如果你想要为特定的Git仓库设置不同的用户名和邮箱,你需要在该仓库的目录中运行以下命令(不带--global):

git config user.name "Your Name"
git config user.email "your_email@example.com"

(3) 系统级别,系统级别的配置较少使用,但如果需要为计算机上的所有用户设置用户名和邮箱,可以使用 --system 选项。通常需要管理员权限:

sudo git config --system user.name "Your Name"
sudo git config --system user.email "your_email@example.com"
1.2 设置默认编辑器

Git 允许你选择用于编辑提交信息的默认文本编辑器。例如,如果你想要设置 Vim 作为默认编辑器,可以使用如下命令:

(1) 全局级别

git config --global core.editor "vim"

(2) 本地级别

git config core.editor "vim"

(3) 系统级别:

sudo git config --system core.editor "vim"
1.3 查看配置信息

可以通过运行以下命令来查看所有的配置信息,包括它们所在的层级:

git config --list --show-origin

该命令会显示所有的配置及其来源文件。

请注意,在团队环境中,通常建议至少设置全局级别的用户名和邮箱,以确保你的提交能正确地与你的身份关联。如果你在不同的项目中需要使用不同的邮箱或用户名,可以在各自的仓库中设置本地配置来覆盖全局设置。

2. 基础提交信息
2.1 基本模板

在 Git 中设置提交消息模板可以帮助标准化团队成员的提交信息,确保每个提交都包括必要的信息,比如问题追踪号、类型标签、简短描述等。以下是如何设置 Git 提交消息模板的步骤:

首先,创建一个文本文件来作为模板。你可以在任何地方创建这个文件,但为了方便,通常把它放在项目目录或者用户的家目录下。例如,你可以创建一个名为 .gitmessage.txt 的文件,并添加以下内容作为模板:

# Subject line (best to under 50 chars). 简单


# The reason why do this commit.
Reason:

# The code position in project.
Module:

# Multi-line description of this commit.
Description:

# Something about commit:
Signed-off-by: Once Day <once_day@qq.com>

确保将指导性的文本(例如,以 # 开头的行)放在模板中,因为 Git 会自动忽略提交消息中以 # 开头的行。

接下来,你需要告诉 Git 使用这个模板。运行以下命令,将模板路径设置到 Git 配置中:

git config --global commit.template /path/to/.gitmessage.txt

使用 --global 标志将模板应用到当前用户的所有 Git 仓库中。如果你只想在特定的仓库中使用这个模板,应该在该仓库目录中运行命令并移除 --global 标志。

配置完成后,每次运行 git commit 时,Git 都会打开你配置的编辑器,并在其中显示模板内容。你可以填入相关的信息,删除所有注释行(以 # 开头的行),然后保存退出编辑器来创建提交。

如果你想在某次特定的提交中跳过模板,可以使用 -m 参数直接在命令行中提供提交消息,或者使用 --no-template 参数忽略模板。

git commit -m "Your commit message"

或者

git commit --no-template

这些步骤可以帮助你设置一个标准化的提交消息模板,从而提高代码库的清晰度和可维护性。

config文件写法一般如下:

[commit]
        template = /home/onceday/git-onceday-template.txt
2.2 署名信息介绍

下面是Linux内核代码中常见的提交署名方式:

Suggested-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Alexander Popov <alex.popov@linux.com>
Tested-by: Laura Abbott <labbott@redhat.com>
Signed-off-by: Kees Cook <keescook@chromium.org>

在开源项目中,尤其是在 Linux 内核开发中,贡献者们会在提交信息中添加特定的标记行来表示他们对提交作出的不同类型的贡献或审查。这些标记行有助于记录和认可不同参与者对代码变更的贡献。以下是一些常见的标记行:

  • Signed-off-by: 表示提交者同意项目的贡献者许可协议(Contributor License Agreement, CLA),并且他们有权贡献这段代码。
  • Reviewed-by: 当代码经过了代码审查时,审查者会在代码最终被合并之前使用这个标记来表示他们已经审查了这段代码,并认为它准备就绪。
  • Tested-by: 当有人在特定的环境或配置下测试了代码,并且测试通过时,他们会添加这个标记来说明测试情况。
  • Reported-by: 当一个问题由某人报告时,他们的贡献可以通过这个标记来认可。
  • Acked-by: 表示某人虽然没有亲自审查代码,但他们同意这个变更或提议,并且他们的支持通常是基于他们对某个特定领域的专业知识。
  • Suggested-by: 当代码提交是基于他人的建议时,使用这个标记来认可提出建议的人。
  • Co-developed-by: 当代码是由两个或多个人共同开发时,其他开发者(非最终提交者)可以用这个标记来表示他们的贡献。
  • Helped-by: 当某人在某个问题上提供了帮助,但这种帮助不适合用其他更具体的标记时,可以使用这个标记。
  • Based-on-patch-by: 如果当前的提交是基于其他人之前的补丁修改或重构的,可以使用这个标记来认可原始补丁的作者。
  • Fixes: 当提交是为了解决之前提交中引入的特定问题或是对某个问题的直接修复时,可以使用这个标记,并通常跟上引导该问题的提交的哈希值。

这些标记行通常在提交信息的尾部添加,并遵循相同的格式:

<Tag>-by: Name <email>

这些标记行帮助维护一个详细的贡献者历史记录,并在一定程度上保证代码的质量和来源的透明度。

2.3 默认提交署名方式

在使用 Git 进行代码评审时,"签名确认"可以通过 Git 的 commit 命令附带 -s--signoff 选项来完成。这会在提交消息的末尾添加一行 “Signed-off-by”,其格式为:

Signed-off-by: Your Name <your.email@example.com>

这表示您认可代码并且有权提交这段代码,同时可能意味着您遵守了项目的贡献者许可协议(Contributor License Agreement, CLA)。

在 Git 中创建一个带有签名确认的提交,可以使用如下命令:

git commit -s -m "Your commit message"

或者如果你已经完成了更改并执行了 git add,你可以这样写:

git commit --signoff -m "Your commit message"

在代码审查的上下文中,签名确认通常是管理或跟踪谁对特定变更负责的一种方式。这可能特别适用于具有法律或合规性要求的开源项目。

请记住,“Signed-off-by” 行应该包括实际签名者的名字和电子邮件地址,而这些信息通常是通过 Git 用户配置中的 user.nameuser.email 来自动获取的。

如果您在多个项目中工作,并且每个项目都使用不同的电子邮件地址,您可能需要根据当前项目配置 Git 用户信息。您可以在特定项目的目录中使用以下命令:

git config user.name "Your Name"
git config user.email "your.email@example.com"
01-28 07:17