文件与暂存区操作

GitGitBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

欢迎回来,未来的时间旅行者!现在,是时候提升你的 Git 技能,探索暂存区(staging area)的奇妙世界了。

在这个实验中,我们将深入探讨 Git 的文件管理功能。你将学习如何从项目中添加和删除文件、忽略不想跟踪的文件、在提交前查看更改,甚至在你犯错时撤销更改。这些技能就像升级你的时间机器——它们将让你在项目的时间线中拥有更多的控制和灵活性。

在本实验结束时,你将更好地理解 Git 的暂存区,以及它如何帮助你创建更有组织性和意义的提交。那么,让我们启动终端,开始这段激动人心的旅程吧!


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/SetupandConfigGroup(["Setup and Config"]) git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/DataManagementGroup(["Data Management"]) git/SetupandConfigGroup -.-> git/git("Show Version") git/SetupandConfigGroup -.-> git/init("Initialize Repo") git/BasicOperationsGroup -.-> git/add("Stage Files") git/BasicOperationsGroup -.-> git/status("Check Status") git/BasicOperationsGroup -.-> git/diff("Compare Changes") git/DataManagementGroup -.-> git/restore("Revert Files") subgraph Lab Skills git/git -.-> lab-387457{{"文件与暂存区操作"}} git/init -.-> lab-387457{{"文件与暂存区操作"}} git/add -.-> lab-387457{{"文件与暂存区操作"}} git/status -.-> lab-387457{{"文件与暂存区操作"}} git/diff -.-> lab-387457{{"文件与暂存区操作"}} git/restore -.-> lab-387457{{"文件与暂存区操作"}} end

设置你的工作空间

让我们首先为这个实验创建一个新目录。打开终端并输入以下命令:

cd ~/project
mkdir git-staging-lab
cd git-staging-lab
git init

这些命令会创建一个名为 git-staging-lab 的新目录,进入该目录,并初始化一个新的 Git 仓库。

接下来,我们创建一个简单的 Python 脚本来进行实验:

echo "print('Hello, Git!')" > hello.py

这条命令会创建一个名为 hello.py 的文件,其中包含一个简单的 Python 打印语句。

将文件添加到暂存区

现在我们已经有了 hello.py 文件,让我们将其添加到暂存区(staging area)。暂存区就像一个准备区,你可以在这里收集所有想要包含在下一次提交中的更改。

运行以下命令:

git add hello.py

这条命令告诉 Git 开始跟踪 hello.py 文件,并将其包含在下一次提交中。

接下来,我们检查仓库的状态:

git status

你应该会看到类似以下的输出:

On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   hello.py

这个输出告诉我们,hello.py 现在已经在暂存区中,准备被提交。

为什么我们需要暂存区?想象一下你在为旅行打包。暂存区就像你的行李箱——你可以将物品(更改)添加到其中,如果改变主意可以移除物品,当你对行李箱中的所有内容满意时,就可以拉上拉链(进行提交)。这让你可以精心策划每次提交的内容,使项目历史更加有条理和有意义。

使用 .gitignore 忽略文件

有时,有些文件你不想让 Git 跟踪,比如临时文件或敏感信息。Git 允许你使用一个名为 .gitignore 的特殊文件来忽略这些文件。

让我们创建一个 .gitignore 文件:

echo "*.log" > .gitignore

这条命令会创建一个 .gitignore 文件,告诉 Git 忽略所有扩展名为 .log 的文件。

接下来,我们创建一个日志文件来测试 .gitignore

echo "This is a log file" > debug.log

检查仓库的状态:

git status

你应该会看到 debug.log 没有出现在输出中,但 .gitignore 出现了:

On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   hello.py

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        .gitignore

.gitignore 文件非常强大。它可以忽略特定文件、整个目录,或者使用模式匹配来忽略符合某些条件的文件。这在现实世界的项目中非常有用,因为你可能会有构建产物、缓存文件或环境特定的配置文件,这些文件不应该成为 Git 仓库的一部分。

让我们添加并提交我们的更改:

git add .gitignore
git commit -m "Initial commit with hello.py and .gitignore"

使用 git diff 查看更改

随着项目的增长,你通常会在提交之前查看所做的更改。Git 提供了一个强大的命令来实现这一点:git diff

让我们修改 hello.py 文件:

echo "print('Hello, Git! Welcome to the staging area.')" > hello.py

现在,使用 git diff 查看更改内容:

git diff

你应该会看到类似以下的输出:

diff --git a/hello.py b/hello.py
index ed51d3f..1385fe3 100644
--- a/hello.py
+++ b/hello.py
@@ -1 +1 @@
-print('Hello, Git!')
+print('Hello, Git! Welcome to the staging area.')

这个输出准确地展示了文件中发生的变化。- 行显示被删除的内容,而 + 行显示被添加的内容。

git diff 就像时间机器的日志本。它允许你查看所做的确切更改,这在试图记住你做了什么或在提交前审查更改时非常有用。git diff --staged 是这个命令的另一个有用变体。它显示你已经暂存但尚未提交的更改。这在提交前审查更改时非常有用。

q 退出 git diff 视图。

取消暂存更改

有时,你可能会将一个文件添加到暂存区,然后又改变了主意。Git 允许你轻松地取消暂存更改。

首先,让我们将 hello.py 的更改暂存:

git add hello.py

现在,假设我们改变了主意,不想将这些更改包含在下一次提交中。我们可以使用 git restore 命令取消暂存该文件:

git restore --staged hello.py

让我们检查状态:

git status

你应该会看到 hello.py 现在列在“Changes not staged for commit”(未暂存的更改)下,而不是“Changes to be committed”(待提交的更改)。

这种将文件移入和移出暂存区的能力让你对提交有更精细的控制。这就像在实际旅行之前,你可以随意打包和解开行李箱一样。

总结

恭喜你,Git 探索者!你已经提升了你的版本控制技能。让我们回顾一下你在这个实验中学到的内容:

  1. 如何使用 git add 将文件添加到暂存区
  2. 如何使用 .gitignore 忽略你不想跟踪的文件
  3. 如何在提交前使用 git diff 查看文件中的更改
  4. 如何使用 git restore --staged 取消暂存更改

这些技能让你对 Git 工作流有了更多的控制。特别是暂存区,它是一个强大的功能,允许你通过精心选择要包含的更改来创建更有意义的提交。

以下是这些技能如此重要的原因:

  1. 选择性提交:暂存区允许你只提交部分更改,帮助你创建更小、更专注的提交。
  2. 忽略文件.gitignore 通过排除不需要版本控制的文件,帮助保持仓库的整洁。
  3. 审查更改git diff 允许你在提交前仔细检查更改,帮助你及早发现错误。
  4. 灵活性:取消暂存更改的能力让你可以自由改变主意,使 Git 使用起来不那么令人生畏。

随着你继续 Git 的旅程,你会发现这些技能非常宝贵。它们构成了更高级 Git 工作流的基础,让你能够轻松管理复杂的项目。

记住,熟练掌握 Git 需要练习。不要害怕尝试和犯错——这是我们学习的方式!继续探索,继续提交,看着你的项目随着时间的推移不断演变。

你在 Git 世界中的下一次冒险即将到来。保持你的好奇心,祝你编程愉快!