为什么在使用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
以上步骤可以以图形方式表示如下: