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

相关推荐
初级代码游戏2 小时前
Git或TortoiseGit的小BUG(可解决):空库报错Could not get hash of ““
git·bug
来一碗刘肉面2 小时前
git中使用SSH的配置
运维·git·ssh
意法半导体STM323 小时前
基于 STM32N6-AI Image Classification 使用 git bash 命令行示例 LAT1552
人工智能·git·stm32·ai·gdb·stm32n6·stedgeai
uncle_ll4 小时前
Git 别名:用简短命令大幅提升开发效率
linux·git
确定过眼神!10 小时前
WSL + VSCode + Git + Node.js 开发环境配置文档
git·vscode·node.js
Franklin13 小时前
【git 基础】detached HEAD state的出现和解决
git
一碗清汤面14 小时前
打造AI代码审查员:使用 Gemini + Git Hooks 自动化 Code Review
前端·git·代码规范
烟花的学习笔记15 小时前
【科普向-第七篇】Git全家桶介绍:Git/Gitlab/GitHub/TortoiseGit/Sourcetree
git·gitlab·github·tortoisegit·嵌入式软件开发·sourcetree
潘潘潘潘潘潘潘潘潘潘潘潘17 小时前
【Linux】Linux开发必备:Git版本控制与GDB调试全指南
linux·运维·服务器·git·学习方法
Doris_LMS1 天前
Git在idea中的实战使用经验(一)
java·git·gitlab·idea