Git 的 stash pop 命令会合并工作区和暂存区?

考虑这样的场景:

  1. 本地修改了 A 文件和 B 文件
  2. git add A
  3. git stash
  4. git stash pop

发现 A 文件从暂存区回到了工作区。

这是什么原因呢?求解释一下 git stash 的原理么?为什么要这么设计呢?

阅读 5.6k
1 个回答

stash 有个很实用的应用场景。
比如你正在更新迭代网站的新版本,代码修改了一堆,暂存的未暂存的。突然发现线上有个紧急 bug。
git stash 就能保存你当前修改的代码,并进入你修改之前那个干净的 commit 分支。
这时候可以专心处理bug,等处理完 commit 提交以后执行git stash pop
这时候 工作目录 = bug 改完提交的 commit + 之前保存的修改的代码

pop 之后文件的确都会回到工作区。可以执行 git stash pop --index,这样该在暂存区的文件还是会在暂存区。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进