📜  git stash 之后你怎么回来 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:41:27.892000             🧑  作者: Mango

Git Stash 之后你怎么回来

在使用 Git 进行项目开发时,你可能会遇到的一个情况是,在进行某个分支的开发时,需要暂时切换到其他分支修复一些紧急的 bug。这时候,你可能不希望直接提交当前分支的代码,而希望把修改内容暂存起来,切换分支后再回来继续开发。这时候,Git 提供了一个非常有用的功能叫做 git stash

Git Stash 的原理

git stash 的作用是将当前分支的修改内容暂存到一个临时区域中,然后将工作区还原到上一次提交的状态。这样,你就可以切换到其他分支进行操作,等到需要回到原来的分支时,再把之前暂存的修改内容恢复回来。具体来说,git stash 的实现步骤如下:

  1. 将修改内容暂存到一个临时区域中(包括工作区和暂存区)。
  2. 将工作区还原到上一次提交的状态。
  3. 将临时区域的内容存储到一个 stash 对象中,并把它保存到 Git 数据库中。
  4. 清空临时区域。
如何使用 git stash

使用 git stash 很简单,只需要在当前分支下执行以下命令:

git stash

执行该命令后,你会发现控制台输出了一条提示信息:

Saved working directory and index state WIP on master: 0123456 add some feature

git stash 会自动对 commit 进行一个提交,这个提交的备注信息是 "WIP on <当前分支>: <上一次提交的 SHA-1 值> <上一次提交的备注信息>"。这里的 WIP 是 Work In Progress 的缩写,表示这是一个未完成的工作提交,它包含了工作区和暂存区的所有修改内容。

如果你想在 stash 过程中添加一个备注信息,可以使用 -m 参数指定:

git stash save -m "add some new feature"
如何恢复 git stash

当你需要恢复之前暂存的修改内容时,可以使用以下命令:

git stash apply

执行该命令后,暂存区和工作区的修改内容都会被还原回来。

如果你有多个 stash,在恢复时需要指定要恢复的 stash 对象的序号(从 0 开始):

git stash apply stash@{1}

如果你想在恢复之后删除这个 stash 对象,可以使用以下命令:

git stash drop

如果你只想查看 stash 对象的信息,可以使用以下命令:

git stash list
总结

在 Git 中使用 git stash 功能能够很好地解决临时的开发需求,让你的开发工作变得更加灵活。在操作上,只需要使用 git stash 暂存修改内容,再使用 git stash apply 恢复这些内容即可。需要注意的是,当你有多个 stash 对象时,需要指定要恢复的 stash 对象的序号。同时,建议在使用 git stash 时,给暂存的对象添加一个更具可读性的备注信息,以方便日后查找。