为什么在使用git commit命令之前要使用git add命令?


git add 命令将文件添加到暂存区,而 git commit 命令会将更改永久写入存储库。

完成一个重要的功能后,您需要创建该更改的快照并将其保存到 Git 存储库。为此,您将执行提交操作。

在 Git 中,提交之前存在一个中间步骤,这在其他版本控制系统中不存在。这个中间步骤称为暂存区。暂存区也称为索引。暂存区可用于构建您想要一起提交的一组更改。git add 命令可用于将工作区中的更改推送到暂存区。

简单来说,git add 命令就像摄影师为集体照摆好所有人的姿势,而 git commit 就像摄影师实际拍摄照片一样。暂存区允许我们在更改最终确定之前预览更改。

让我们用一个例子来理解:

步骤 1 - 创建一个名为“tut_repo”的文件夹,并使用 cd 命令指向此目录

步骤 2 - 初始化一个空数据库。

$ mkdir tut_repo // Create a directory
$ cd tut_repo/ // Navigate to the director
$ git init //Initialize an empty database

一条显示存储库已创建的消息将显示给用户。

Initialized empty Git repository in E:/tut_repo/ .git

步骤 3 - 创建 3 个文件“file1.txt”、“file2.txt”和“file3.txt”,并在这些文件中添加一些文本。

$ echo hello > file1.txt
$ echo hello > file2.txt
$ echo hello > file3.txt

步骤 4 - 执行命令 git status。

$ git status

一条消息显示这些文件应该添加到暂存区(如上所示)。只有将文件添加到暂存区后才能提交这些文件。这可以使用 git add 命令实现。

On branch master
No commits yet
Untracked files:
   (use “git add <file>...” to include in what will be committed)
   file1.txt
   file2.txt
   file3.txt

步骤 5 - 执行 git add 命令将文件添加到暂存区。

$ git add file1.txt file2.txt file3.tx

执行 git status 命令以验证文件是否已添加到暂存区。

$ git status

请参考以下内容以获取输出。

On branch master
No commits yet
Changes to be committed:
   (use “git rm −−cached<file>...” to unstage)
   new file: file1.txt
   new file: file2.txt
   new file: file3.txt

步骤 6 - 假设在审查后,我们决定不将“file3.txt”包含在最终提交中。这可以通过使用命令 git rm --cached 来实现。使用此命令的语法为:

$ git rm −−cached <file_name>

以下命令将从暂存区中删除“file3.txt”。

$ git rm −−cached file3.txt

执行 git status 命令以验证文件是否已从暂存区中删除。

$ git status

输出表明该文件已从暂存区中删除。

On branch master
No commits yet
Changes to be committed:
   (use “git rm −−cached<file>...” to unstage)
   new file: file1.txt
   new file: file2.txt
   new file: file3.txt
Untracked files: (use “git add <file>...” to include what will be committed)
   file3.txt

步骤 7 - 从暂存区删除“file3.txt”后,您可以检查工作树的状态,最后将“file1.txt”和“file2.txt”添加到存储库。使用 git commit 命令来实现这一点。

$ git commit −m ‘snapshot of file1 and file 2’

上面命令的输出显示在屏幕截图中。

[master (root−commit)5552726 snapshot of file1 and file2
2 files changed, 2 insertions(+)
create mode 100644 file1.txt
create mode 100644 file2.txt

以上步骤可以以图形方式表示如下:

更新于:2021年2月20日

4K+ 次查看

开启您的职业生涯

完成课程获得认证

开始学习
广告