简介
在这个实验中,你将学习如何检查 Git 仓库中的未提交更改。我们将探讨重要的 git status
命令,以查看工作目录的整体状态和暂存的更改。
此外,你将了解如何使用 git diff
命令来检查文件的具体修改,从而在提交之前确切地了解哪些内容发生了变化。最后,我们将简要介绍如何同时检查暂存和未暂存的更改。
在这个实验中,你将学习如何检查 Git 仓库中的未提交更改。我们将探讨重要的 git status
命令,以查看工作目录的整体状态和暂存的更改。
此外,你将了解如何使用 git diff
命令来检查文件的具体修改,从而在提交之前确切地了解哪些内容发生了变化。最后,我们将简要介绍如何同时检查暂存和未暂存的更改。
git status
查看更改在这一步中,你将学习如何使用 git status
命令来查看 Git 仓库的当前状态。在使用 Git 时,这个命令是你的好帮手,因为它能准确地告诉你当前的情况。
首先,确保你位于 my-time-machine
目录中。你可以通过输入以下命令来实现:
cd ~/project/my-time-machine
现在,让我们运行 git status
命令:
git status
你应该会看到类似以下的输出:
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean
让我们来分析一下这个输出:
On branch master
:这表明你当前位于 master
分支上。分支就像是项目中的不同时间线。Your branch is up to date with 'origin/master'
:这意味着你的本地 master
分支与远程的 origin/master
分支是同步的(我们稍后会详细了解远程仓库)。nothing to commit, working tree clean
:这是理想状态!这意味着你的项目中没有未保存(提交)到 Git 历史记录中的更改。git status
命令非常重要,因为它能帮助你了解哪些文件被修改了、哪些是新的且未被跟踪的,以及哪些更改准备好提交了。在对项目进行任何更改后,你应该首先运行这个命令,以了解 Git 是如何看待这些更改的。
git diff
检查修改在这一步中,你将学习如何使用 git diff
命令来查看文件中所做的具体更改。git status
会告诉你哪些文件发生了更改,而 git diff
则会显示这些文件中具体的更改内容。
首先,让我们对 message.txt
文件进行修改。确保你仍处于 ~/project/my-time-machine
目录中。
使用 nano
编辑器打开该文件:
nano message.txt
在文件中添加一行新内容,例如:
Hello, Future Me
This is a new line.
按 Ctrl + X
退出,然后按 Y
保存,再按 Enter
确认文件名。
现在我们已经修改了文件,让我们使用 git status
查看 Git 是如何识别这个更改的:
git status
你应该会看到输出表明 message.txt
已被修改:
On branch master
Your branch is up to date with 'origin/master'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: message.txt
no changes added to commit (use "git add" and/or "git commit -a")
Git 告诉我们 message.txt
已被 modified
(修改),并且这些更改 not staged for commit
(未暂存以进行提交)。这意味着我们已经修改了文件,但还没有告诉 Git 准备将这些更改提交。
现在,让我们使用 git diff
来查看具体的更改:
git diff
你会看到类似以下的输出:
diff --git a/message.txt b/message.txt
index a1b2c3d..e4f5g6h 100644
--- a/message.txt
+++ b/message.txt
@@ -1 +1,2 @@
Hello, Future Me
+This is a new line.
让我们来理解这个输出:
---
和 +++
开头的行分别显示原始文件 (a/message.txt
) 和新文件 (b/message.txt
)。@@
开头的行称为“hunk 头”。它显示了文件中更改的位置。-1 +1,2
表示从原始文件的第 1 行开始,删除了 1 行,从新文件的第 1 行开始,添加了 2 行。-
开头的行显示被删除的行。+
开头的行显示被添加的行。在我们的例子中,我们添加了一行,所以你会看到以 +
开头的行。
git diff
命令在暂存或提交更改之前查看修改内容时非常有用。它可以帮助你发现错误,并确保你只将预期的修改包含在提交中。
按 q
退出差异视图并返回命令行。
在这一步中,你将了解 Git 如何处理暂存和未暂存的更改,以及如何使用 git diff
命令来检查这些更改。
回顾上一步,我们修改了 message.txt
文件,但没有将更改暂存。现在,让我们使用 git add
命令将更改暂存:
git add message.txt
现在,再次运行 git status
命令:
git status
输出应该显示更改现在已被暂存:
On branch master
Your branch is up to date with 'origin/master'.
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: message.txt
Git 现在显示 Changes to be committed
,这表明对 message.txt
的修改已进入暂存区,准备进行下一次提交。
如果我们现在运行 git diff
命令,会发生什么呢?
git diff
你可能会惊讶地发现没有输出。这是因为 git diff
默认显示的是工作目录和暂存区之间的差异。由于我们工作目录中的更改现在与暂存区中的更改相同(因为我们刚刚添加了这些更改),所以没有差异可显示。
要查看暂存区和上一次提交之间的差异,我们需要使用 git diff
命令的另一种形式:
git diff --staged
或者,等效地:
git diff --cached
这两个命令的作用相同。让我们运行它:
git diff --staged
现在,你应该会看到暂存的更改与上一次提交之间的差异:
diff --git a/message.txt b/message.txt
index a1b2c3d..e4f5g6h 100644
--- a/message.txt
+++ b/message.txt
@@ -1 +1,2 @@
Hello, Future Me
+This is a new line.
这显示了我们所做的具体更改:添加了 "This is a new line." 这一行。
理解 git diff
(工作目录与暂存区)和 git diff --staged
(暂存区与上一次提交)之间的区别,是有效使用 Git 的基础。这能让你在进行永久性提交之前,仔细审查不同阶段的更改。
在本次实验中,你学习了如何检查 Git 仓库中的未提交更改。首先,你使用 git status
命令来了解仓库的整体状态,包括当前分支以及是否存在修改、新增或未跟踪的文件。这个命令对于了解存在哪些更改至关重要。
接下来,你探索了 git diff
命令,以检查文件内所做的具体修改。git status
会告诉你哪些文件发生了更改,而 git diff
则会显示逐行的具体差异,让你在暂存或提交更改之前能够审查更改的内容。