当前位置:   article > 正文

Git文件管理:Git提交_git 提交

git 提交

概述

提交是 Git 的核心概念之一,用于在特定时间创建存储库的快照。它可以帮助您捕获当前的项目存储库。git commit命令可以为您提供 git 存储库的历史记录,直到进行此提交或创建快照为止。我们可以在提交中包含一条消息或描述,详细说明该提交的目的。提交还包含大量元数据,例如有关作者姓名、提交 ID 和创建提交的时间戳的详细信息。

先决条件

Git add是一个方便的命令,用于将更改从工作目录添加到暂存区域。它在工作目录中获取修改后的文件,并将修改后的版本放置在暂存区域中。这里,暂存区是存储更改的区域。它是提交之前可以查看、审查、更改和格式化代码的中间区域,并且充当提交的预览位置。因此,git add命令用于将更改添加到暂存区,然后git commit可以通过创建提交来记录这些更改。

因此,git add和git commit是 git 工作流程中使用的基本和主要命令。

要将单个文件添加到暂存区,我们可以编写:

git add <file_name>

要将多个文件添加到暂存区,我们可以指定文件名,每个文件名之间有空格:

git add <file_name_1> <file_name_2> <file_name_3> <file_name_4>

要将工作目录中所有修改的文件添加到暂存区,我们可以这样写:

git add .

Git 提交简介

Git commit是 Git 中最常用的命令。它会拍摄 git 存储库在特定时间进行的更改的快照。它充当保存点,这意味着将来的任何时候,我们都可以返回到这一点,并且它被认为是项目的安全版本,因为 Git 在更改它们之前会进行询问。考虑提交的更改应该位于暂存区域,因为暂存允许我们在提交之前存储它们以供预览,并且当我们想要将这些更改提交到 git 存储库时,git commit 命令允许我们记录这些更改。

git commit帮助我们跟踪项目存储库中的历史记录和更改。如果我们想返回或发现错误,或者想要进行任何更改,它可以在将来为我们提供帮助。

从上图中我们可以看到,更改已从当前工作目录添加到暂存区域。然后,使用git commit操作将更改保存或提交到 git 存储库。

每个提交都有一个在提交时自动生成的唯一提交 ID,提交 ID 是使用安全哈希算法(也称为 SHA)生成的加密数字。我们应该始终在提交中包含一条消息,因为它有助于总结和描述正在提交的更改,并且可以让其他人轻松查看更改的内容和时间。

Git 提交命令

Git提交命令是:

git commit

它将提交更改并生成一个提交 ID。当在命令行中运行时,上述命令将提交暂存区域中的所有更改,并提示默认编辑器请求提交消息或描述。我们可以输入解释性提交消息,然后保存并退出编辑器以创建实际的提交。

您可以在git commit命令中包含许多选项来满足不同的目的。让我们看看本文中的一些标准选项。

Git Commit-a

git commit命令最流行的选项之一是-a选项;这里,-a表示全部。它用于提交暂存区域中所有更改的快照。此选项仅考虑 Git 中已添加的文件,并且不会提交暂存区域中不存在的新创建的文件。

git commit -a

让我们通过一个例子来理解这一点;假设你有两个文件;一个是已经在暂存区中的hello_world.py文件,我们对其进行了一些更新,另一个文件是新创建的hello_people.py文件,该文件没有添加到暂存区中,那么这个git commit命令将提交所有已使用git 添加到暂存区域的文件,而不是尚未添加到暂存区域且未跟踪的新创建的文件。

运行上述命令后,将提示一个文本编辑器,我们可以在其中输入提交消息,保存并关闭编辑器以创建提交。

Git Commit-m

Git commits -m选项是 commit 命令中最常见和最流行的选项。它可以帮助您在命令行上编写提交消息。

git commit -m "An explanatory and descriptive commit message here."

此命令启动提交过程并允许您同时包含提交消息,因此不会提示文本编辑器。上面的命令将使用给定的提交消息进行提交。

Git 提交修改

git commit amend命令帮助我们更改最后一次提交的提交消息。如果我们提交了错误的消息,这个命令会很方便。传递此选项的主要目的是修改/更新先前的提交。

该命令可以写为:

git commit --amend

上面的命令将提示文本编辑器并要求我们编辑之前的提交消息。编辑消息后,我们可以保存它并关闭文本编辑器;这将转换最后一次提交的提交消息。

如果您不希望出现文本编辑器,则可以使用该命令同时包含提交消息。AA

git commit --amend -m "An explanatory and descriptive commit message here."

修改命令是修复最近提交的一个非常重要的命令。git commit amend 命令的工作原理是将截至该点的所有暂存更改与之前的提交相结合,而不是将其捕获为新快照。

我们还可以从上图中看到提交历史记录;修改后没有创建新的提交。

注意:
仅应在尚未推送到远程存储库的提交上重写提交。

没有阶段的 Git 提交

对于简单的场景,我们通常将未跟踪的更改添加到暂存区,然后将更改提交到git存储库,我们也可以跳过git add命令,该命令会将文件添加到暂存区,我们可以直接使用-a标志和提交命令,例如:

git commit -a -m "An explanatory and descriptive commit message here."

在这里,我们可以添加更改,然后使用上述命令直接提交它们。但是,通常不建议跳过暂存环境,因为它有时会使您包含不需要的更改。

Git 提交日志

Git commit log是用于查看给定存储库的提交历史记录的命令。git log命令可以帮助你查看整个项目的提交历史记录,借助它,我们可以过滤和搜索特定的更改。

日志中的每个提交都有一个唯一的提交 ID、有关作者的信息、时间戳以及与提交关联的消息或描述。

基本的git log命令将显示最近的提交,可以写为:

git log

Git 日志输出可以通过多种方式进行自定义和过滤。下面介绍了与git log命令相关的一些最常见的选项:

1. git log --oneline

git log --oneline

带有--oneline选项的git log用于将输出显示为每行一次提交。当我们只想获得项目存储库的高级概述以提交历史记录时,它非常有用。

2. git log --patch

git log --patch

或者

git log -p

带有--patch选项的Git 日志用于显示已更改文件的详细信息。它还显示文件中更新行的位置,例如添加、删除或修改的行。此命令与git log --oneline命令相反,因为它提供了项目存储库提交历史记录的详细视图。

3. git log -n <limit>

git log -n <limit>

Git log 命令和 limit 用于限制或限制我们想要列出的提交数量。例如,git log -n 10将仅显示最近的10次提交。这样,我们就可以专注于最近的具体提交。

4. 过滤提交历史记录

我们可以根据需要过滤我们想要查看的提交。我们可以对输出应用作者、日期、金额、时间等过滤器。每种过滤器都有其规格和用途。

A. 作者:

git log --author="Author name"

此命令将显示项目存储库中仅由给定作者所做的所有提交。


b. 按日期和时间:

git log --after="yy-mm-dd"

此命令将显示项目存储库中给定日期之后进行的所有提交。

 git log --after="yy-mm-dd" --before="yy-mm-dd"

此命令有助于跟踪项目存储库中在给定日期之前和给定日期之后两个日期之间创建的所有提交。


C. 通过提交消息:

我们还可以通过提交消息过滤存储库中的提交。为此,我们可以使用 grep 选项:

 git log --grep=" Commit message."

上面的命令将显示所有包含我们在提交消息中提供的单词的提交。

签署您的承诺

在了解如何对提交进行签名之前,我们首先了解一下为什么需要签名以及签名的含义。

如您所知,每个提交都有两个与其关联的属性。

1. 作者:

根据存储的信息,贡献或执行工作的人的姓名。


2. 提交者:

进行更改的人。

两者是相同的,因为在大多数情况下,作者提交了更改。但是,在某些情况下,有人可能会通过获取您的详细信息来配置其 git 设置。例如,某人可以通过应用以下命令使用您的详细信息设置他们的电子邮件和姓名:

  1. git config --global user.email "your_username@example.com"
  2. git config --global user.the name "Your Name"

Git 假定该人提供的姓名和电子邮件地址是真实的。因此,该人所做的提交和更改会被错误地认为是您所做的,因为您的详细信息在更改的上下文中可见。

因此,如果任何用户将电子邮件和姓名都设置为您的,那么这些提交在 GitHub 上就无法区分。这意味着某人可以将他们的电子邮件地址设置为您的电子邮件地址,这将显示为您已承诺。在这种情况下,作者和提交者是不同的。

为了避免这种情况,可以对提交进行签名。这可以让您证明该承诺来自您。如果提交未签名,则无法保证提交的作者不是创建它的人。在某些情况下,这可能会隐藏恶意代码的真正作者。

签名将确保承诺的作者是他所声称的人。签名不会阻止某人将您添加为提交的作者,但会导致未签名的提交,并且不能保证提交的作者与提交者相同。

您将在提交旁边看到一个“已验证”徽章,以确认提交已签名。

让我们使用GPG(Gnu Privacy Guard)签署一份提交。GPG是一种最初为电子邮件传输而开发的加密技术。GPG 是一种双密钥加密方法,其中交换的消息(明文)首先被压缩,然后创建会话密钥作为一次性密钥。压缩的明文使用会话密钥加密。然后,会话密钥使用目标的公钥进行加密,并捆绑到称为密文的加密消息中。目标可以使用私钥解密会话密钥并将其解压缩以恢复原始明文。本文需要详细介绍一下GPG技术。

在这里,我们将重点讨论如何使用这种技术来签署提交。

要生成 GPG 密钥,可以使用以下命令:

gpg --full-gen-key

现在您可以使用以下命令列出 GPG 密钥:

gpg --list-secret-keys --keyid-format lang

您应该看到类似于9BJ5C34989567Y19的输出

现在您需要将 GPG 密钥添加到 GitHub,以便可以验证您的提交。

为此,请按照下列步骤操作:

  1. 前往 GitHub。
  2. 前往设置。
  3. 单击 SSH 和 GPG 密钥。
  4. 单击“新建 GPG 密钥”。
  5. 使用以下命令获取他的 GPG 密钥gpg --armor --export 9BJ5C34989567Y19。
  6. 将密钥粘贴到 GitHub 中
  7. 保存并退出

创建 GPG 密钥并将其上传到 Github 后,您可以配置 Git 以使用您的密钥。

通过运行以下命令将密钥添加到 Git 全局配置:

git config --global user.signingkey 9BJ5C34989567Y19

要每次签署提交,您可以将-S选项与普通提交命令一起使用,例如git commit -S。

您还可以使用以下方式自动签署所有提交:

git config --global commit.gpgSign true

要检查提交是否已签名,请转到 GitHub 并导航到该提交,然后查看其旁边是否有“已验证”徽章。

使用示例

让我们创建一个名为hello_world 的空文件。cpp并向我们的文件添加一些代码。

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main()
  4. {
  5. cout << "Hello everyone!";
  6. }

让我们使用git add命令将文件添加到暂存区域。

git add .

上面的命令将添加hello_world.txt 文件。cpp文件到暂存区;现在,我们可以使用git commit命令提交文件。

  1. git commit -m "Written the code for printing the "Hello everyone!" statement."

上面的命令将提交更改以及提交描述,如打印“大家好!”的代码中所写的那样。陈述。

如果您想在下一次提交中添加工作副本中的所有更改,那么您可以使用“-a”参数和“-m”选项,从而可以跳过暂存环境步骤,从而省略“ git add”命令,可以写为:

git commit -a -m "Written the code for printing the "Hello everyone!" statement."

现在,考虑一下当您输错了上次提交的消息并想要修改它时的情况;那么,就不需要创建新的提交。我们可以使用修改选项编辑上次提交的提交消息。

git commit --amend -m "New commit message."

要查看我们在项目历史记录中所做的提交,我们可以使用git log命令:

git log

它将显示项目存储库历史记录中创建的提交记录。另外,可能会出现这样的情况:运行git log命令并且卡在那里。当您按 Enter 键时,它将导航到较旧的命令,直到结束标志。因此,在这种情况下要退出git log窗口,您可以按q键,它会将您从窗口中退出,然后您将返回到命令行。

假设我们只想查看刚刚创建的最后两个提交,以使用git log命令中的过滤选项。

git log -n 2

上述命令将仅显示最近的2次提交。

结论

  • Git commit是 Git 中最常用的命令,用于在特定时间拍摄存储库暂存更改的快照。
  • git commit命令的-a选项用于提交暂存区域中所有更改的快照。
  • git commit命令的-m选项用于在命令行上写入提交消息。
  • --amend选项用于更改最近提交的提交消息。
  • 修改命令是修复最近提交的一个非常重要的命令。git commit amend 命令的工作原理是将截至该点的所有暂存更改与之前的提交相结合,而不是将其捕获为新快照。
  • 提交消息应该简短、具有解释性并描述已提交的更改。
  • -a选项与-m标志一起使用,可以帮助我们跳过暂存环境直接提交更改。
  • Git commit log 是用于查看给定存储库的提交历史记录的命令。
  • 带有--oneline选项的git log用于将输出显示为每行一次提交。
  • 带有--patch选项的Git 日志用于显示已更改文件的详细信息。
  • Git log 命令和 limit 用于减少我们想要显示的最近提交的数量。
  • 我们可以通过对git log命令应用过滤器来查看特定提交,例如作者、日期、提交 ID、提交消息和时间。
  • 提交签名可帮助您验证代码的作者是否与代码的编写者相同。
  • 签名不会阻止某人将您添加为提交的作者,但会导致未签名的提交,并且不能保证提交的作者与提交者相同。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/691261
推荐阅读
相关标签
  

闽ICP备14008679号