如何使用 git stash 暂时缓存 git 工作区或暂存区的内容改动

前言

在日复一日的代码开发过程中,我们经常会遇到这样的情境:你正在开发一个新功能,但是突然需要切换到另一个分支处理一个紧急bug。这个时候,你的代码又处于半成品状态,既不想提交一个半成品的commit,又不想丢失当前的工作进展。这时候,git stash 就是你的救星。今天,我们就来深入了解一下这个强大的Git工具。

git stash 是什么

git stash 命令可以将你的工作区和暂存区的改动“储藏”起来,让你得到一个干净的工作状态。这个状态下,你可以自由切换分支,处理其他任务,等到适当的时候再“取出”这些改动继续工作。

基本使用

1. 储藏改动

当你处于一个分支,完成了部分工作,但是还不想提交时:

bash
git stash

这条命令会将当前分支的工作区和暂存区的改动保存起来,让工作目录回到最近一次的 git commitgit pull 的状态。

2. 查看储藏列表

储藏了代码之后,你可以通过以下命令查看储藏的列表:

bash
git stash list

这会列出所有你储藏起来的改动,每个储藏都有一个对应的索引,如 stash@{0}

3. 恢复改动

当你想要继续之前的工作时,可以通过以下命令将改动恢复到工作区:

bash
git stash pop

这条命令会应用最近的储藏,并从储藏列表中移除它。如果你想保留储藏记录,可以使用 apply

bash
git stash apply

如果你有多个储藏,你也可以指定恢复特定的一个:

bash
git stash pop stash@{2}

4. 删除储藏

如果你想删除某个储藏,可以使用:

bash
git stash drop stash@{index}

例如,删除索引为0的储藏:

bash
git stash drop stash@{0}

如果你想清空所有储藏,可以使用:

bash
git stash clear

高级使用

1. 储藏未暂存的文件

如果你只想储藏还没有 git add 到暂存区的文件,可以使用:

bash
git stash push -m "message" --keep-index

这样只会储藏工作区的改动,而暂存区的文件会保持不变。

2. 包含未跟踪的文件

默认情况下,git stash 不会储藏新添加的未跟踪文件和忽略文件。如果你也想储藏这些文件,可以使用:

bash
git stash push -m "message" --include-untracked

或者简写为:

bash
git stash -u

3. 创建一个储藏分支

有时候,你可能想要把储藏的内容创建一个新的分支来处理,可以使用:

bash
git stash branch new-branch-name stash@{0}

这样会创建一个新的分支 new-branch-name,并且将 stash@{0} 的改动应用到新分支上。

总结

git stash 是一个非常强大的工具,它可以让你的版本控制操作更加灵活和高效。掌握了它,你就能自如地应对各种突发的,代码需求和分支切换场景。但是记住,尽管 git stash 很方便,它不应该被用作长期保存代码的方式。长期的开发工作应该通过分支来管理,而 git stash 更适合于临时保存和切换的场景。

通过今天的教程,你已经学会了如何使用 git stash 来处理日常开发中的一些临时需求。无论你是在修复bug,还是因为某些原因需要暂时撤回你的代码更改,git stash 都能帮你轻松处理。

最后,我想提醒大家,虽然 git stash 很有用,但它并不替代良好的代码管理习惯。确保经常提交你的代码,保持分支的清晰和管理的简单,这样才能让你和你的团队在日常工作中更有效率。