暂存更改
现在我们已经设置好了工作区,让我们创建一些更改并学习如何暂存它们。
首先,让我们对 README.md
文件做一些更改:
echo "This is a work in progress" >> README.md
这条命令会在我们的 README.md
文件中追加一行新内容。同时,我们创建一个新文件:
echo "Some important notes" > notes.txt
现在,如果我们运行 git status
,我们会看到既有已修改的文件,也有未跟踪的文件:
git status
你应该会看到输出显示 README.md
已被修改,而 notes.txt
是未跟踪的文件。
想象一下,此时你需要快速切换到另一个任务,但你还没有准备好提交这些更改。这时 git stash
就派上用场了!
要暂存你的更改,请运行:
git stash
你应该会看到类似以下的输出:
Saved working directory and index state WIP on master: 1234567 Initial commit
现在,如果你再次运行 git status
,你会看到一些有趣的现象:
git status
你会注意到,虽然 README.md
不再显示为已修改,但 notes.txt
仍然被列为未跟踪的文件。这是关于 git stash
的一个关键点:
重要提示: 默认情况下,git stash
只会暂存以下内容:
- 已跟踪文件的更改(Git 已经在跟踪的文件)
- 已暂存的更改
未跟踪的文件(如我们的 notes.txt
)默认不会包含在暂存中。这种行为确保 Git 不会意外隐藏你可能不想包含在仓库中的新文件。
如果你想将未跟踪的文件也包含在暂存中,可以使用 -u
(或 --include-untracked
)选项:
git stash -u
运行此命令后,README.md
的更改和新的 notes.txt
文件都会被暂存。
要查看暂存中的内容,可以使用:
git stash list
你应该会看到一个或两个暂存条目,具体取决于你是否使用了 -u
选项。
按 q
退出暂存列表视图。
请记住,暂存非常适合快速切换上下文。然而,它并不能替代长期工作流中的提交。暂存是用于临时存储的。