谈谈对git stash的理解?

1. 使用场景

有时你想切换分支,但当前这个分支还没完成,你不想把半成品提交,就可以用stash,可以在不提交当前分支的情况下切换分支

2. stash会缓存哪些?

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

  • 添加到暂存区的修改(staged changes)

    git add过了,还没有commit

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

在工作区修改了文件,但还没有用git add加入到暂存区 但以下状态的文件不会缓存:

  • 在工作目录中新的文件(untracked files)

    新文件 git add 后,就变为了tracked

  • 被忽略的文件(ignored files)

3. 如何使用?

  • git stash

    保存当前工作进度,会把暂存区和工作区的改动保存起来

    在给出的输出中,工作是用git stash命令保存的。我们可以检查版本库的状态。

    正如你所看到的,我的工作只是藏在当前位置。现在,目录已经清理完毕。

  • git stash save ""

    保存stash并添加描述信息。类似于 git commit -m "描述信息"

  • git stash list

    显示所有 stash 的列表

  • git stash pop

    从栈中读取最近一次保存的内容,也就是栈顶的stash会恢复到工作区。该命令会将内容从堆栈中删除

    可以通过git stash pop + stash@{1}执行恢复哪个stash恢复到当前目录

  • git stash apply

    将堆栈中的内容应用到当前目录,不同于git stash pop,该命令不会将内容从堆栈中删除 同样可以通过git stash apply + stash@{1/2/3...}执行恢复哪个stash恢复到当前目录

  • git stash show

    显示被藏匿的文件和对它们所做的修改

  • git stash drop

    从堆栈中移除某个指定的stash

  • git stash clear

    一次性删除所有可用的储藏库。

4.总结

主要命令有:

  • git stash 和 git stash save 保存
  • git stash list 和 git stash show 显示(一个是以列表显示所有的,一个是显示单个stash的修改)
  • git stash pop 和 git stash apply 应用到工作区(前者会删后者不会)
  • git stash drop 和 git stash clear 移除(前者删除指定的stash,后者删除所有的)

参考文献

Git -- Stash命令|极客教程

面试官:说说你对git stash 的理解?应用场景? | web前端面试 - 面试官系列

相关推荐
:-)4 小时前
开源项目二开 Git 规范工作流
git
阿米亚波8 小时前
【C/C++包管理器】vcpkg(by microsoft)
c语言·c++·git·vscode·microsoft·github·vcpkg
苍煜10 小时前
Git Worktree 多工作树实战教学-工作多分支实用教程
git
RainingTime13 小时前
新版IDEA使用传统用户名、密码登录Git
git
DevangLic1 天前
【诡异的空文件夹 和 git:冲突合并】最新的尝试
git
舒一笑1 天前
Windows + WSL2 完整复现 Avernet WAIC 6 Bot 协作演示
人工智能·git·开源
生戎马 平安京策1 天前
git寻根——^和~的区别
git
技术小结-李爽1 天前
【工具】git远程分支合并
git·gitee
RootKai1 天前
Git命令与基本使用流程
git