谈谈对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前端面试 - 面试官系列

相关推荐
jingshaoqi_ccc2 小时前
GitKraken最后一个免费版本和下载地址
git·github·gitkraken·版本管理工具
乌云暮年2 小时前
Git简单命令
git·gitee·github·batch命令
用户1259265423205 小时前
使用 Docker 搭建 Gitea 并实现 Git HTTP 自动登录
git
长风破浪会有时呀12 小时前
Git 学习笔记
笔记·git·学习
中微子20 小时前
Git Rebase 详解:概念、原理与实战示例
git
荔枝吻1 天前
【保姆级喂饭教程】Windows下安装Git Flow
windows·git·git flow
云和数据.ChenGuang1 天前
git中的指令解释
git
小Lu的开源日常1 天前
在 macOS 上设置 SSH 和 Git
git·macos·ssh
eleven_h1 天前
ERROR: Permission to Splode/pomotroid.git deni
git