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

相关推荐
工藤孤独12 小时前
Git Worktree 从零到多智能体实战
git
微尘寒风21 小时前
【Git】的安装和使用
java·git
胖大和尚1 天前
Git初始化本地文件夹,并推送到远端
git
啵啵啵12341 天前
Git 底层原理:分支为什么只是一个 41 字节的文件
git
demon75520031 天前
Git Worktree详解介绍
git·worktree
胖大和尚1 天前
当前仓库推送到同一台机器上的另一个文件夹
git
轮到我狗叫了2 天前
git - 版本控制工具 - 对应的常见命令 - 以及无需后续每次手动source conda
git
changxiang3 天前
GIT 备忘
git
DogDaoDao3 天前
Windows 开发提效工具全景指南:60+ 工具的工程化分层配置
windows·git·程序员·开发工具·powershell·everything·msys2
wdfk_prog3 天前
GitHub push 失败:如何扫描并清理 Git 历史中的大文件
git·elasticsearch·github