git stash

245 阅读2分钟

git stash 简单的介绍

stash,译为存放,在 git 中,可以理解为保存当前工作进度,会把暂存区和工作区的改动进行保存,这些修改会保存在一个栈上

后续你可以在任何时候任何分支重新将某次的修改推出来,重新应用这些更改的代码

默认情况下,git stash会缓存下列状态的文件:

  • 添加到暂存区的修改(staged changes)
  • Git 跟踪的但并未添加到暂存区的修改(unstaged changes)

但以下状态的文件不会缓存:

  • 在工作目录中新的文件(untracked files)
  • 被忽略的文件(ignored files)

如果想要上述的文件都被缓存,可以使用-u或者--include-untracked可以工作目录新的文件,使用-a或者--all命令可以当前目录下的所有修

=================================================================

相关的git stash指令

关于git stash常见的命令如下:

  • git stash
  • git stash save
  • git stash list
  • git stash pop
  • git stash apply
  • git stash show
  • git stash drop
  • git stash clea

(不详细介绍,详情参考 fanyouf.gitee.io/interview/g…)

一些应用场景

当你在项目的一部分上已经工作一段时间后,所有东西都进入了混乱的状态, 而这时你想要切换到另一个分支或者拉下远端的代码去做一点别的事情

但是你创建一次未完成的代码的commit提交,这时候就可以使用git stash

例如以下场景:

当你的开发进行到一半,但是代码还不想进行提交 ,然后需要同步去关联远端代码时.如果你本地的代码和远端代码没有冲突时,可以直接通过git pull解决

但是如果可能发生冲突怎么办.直接git pull会拒绝覆盖当前的修改,这时候就可以依次使用下述的命令:

  • git stash
  • git pull
  • git stash pop

或者当你开发到一半,现在要修改别的分支问题的时候,你也可以使用git stash缓存当前区域的代码

  • git stash:保存开发到一半的代码
  • git commit -m '修改问题'
  • git stash pop:将代码追加到最新的提交之后