惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Vercel News
Vercel News
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
雷峰网
雷峰网
有赞技术团队
有赞技术团队
罗磊的独立博客
博客园 - 叶小钗
Jina AI
Jina AI
博客园 - 司徒正美
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
T
Tailwind CSS Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
人人都是产品经理
人人都是产品经理
Apple Machine Learning Research
Apple Machine Learning Research
阮一峰的网络日志
阮一峰的网络日志
Microsoft Security Blog
Microsoft Security Blog
大猫的无限游戏
大猫的无限游戏
量子位
MyScale Blog
MyScale Blog
V
Visual Studio Blog
博客园 - 聂微东
The Cloudflare Blog
Engineering at Meta
Engineering at Meta
小众软件
小众软件
宝玉的分享
宝玉的分享

又见苍岚

COLMAP PatchMatch Stereo 算法详解 事件驱动的状态机框架:从理论到工程实践 Git 在国内网络环境下无法 Push 的排查与修复 —— 配置 Clash 代理 分段五次多项式插值原理详解 路径插值方法深度对比研究 Claude Code 使用指南 OpenClaw 记忆管理与技能创建指南 CBS(Conflict-Based Search)算法详解 A* 算法及其变种详解 OpenClaw 配置多 Agents Windows Powershell 无法加载文件,因为在此系统上禁止运行脚本问题的解决方案 MaxClaw 安装流程 大模型 AI 名词介绍 AList 网盘聚合工具简介 Protobuf 简介与测试 Claude Code 简介以及 GLM 4.7 模型接入 Github 歌词下载工具 163MusicLyrics Python __getattr__ 懒加载 Python TypedDict 机器人仿真平台 Gazebo 安装记录 机器人仿真平台 Gazebo 简介 多机器人路径规划问题(Multi-Agent Path Finding, MAPF)简介 Python exifread 读取修改过的 jpeg 信息错误问题修复 3D 坐标系变换的理解 3D 旋转矩阵基本概念 MongoDB Compass 介绍 Python 环境管理工具 uv Flutter 开发指南 Snipaste 安装下载与黑屏问题解决方案 全局路径规划算法记录
Git Stash 用法
Yiwei Zhang · 2023-07-31 · via 又见苍岚

Git 的 临时改动管理可以依赖 Stash 方法。

简介

在同一个 git 管理仓库下,当然直接使用 git 的常用命令可以很好地和其他开发者共享工作,当开发者不处在同一个版本管理平台下,或仅作临时修改时,则可以通过 git stash 暂存当前改动的方式临时保存代码

常用git stash命令

git stash

该命令将当前改动压栈保存

注意:改动指真正的改动,untarck 文件不属于改动,没有加入 git 管理,不会被压栈

支持参数 save "save message" ,可以添加备注,方便后续查找

压栈后临时记录会以栈的顺序保存起来

git stash list

查看stash了哪些存储

git stash show

显示做了哪些改动,该命令默认显示改动文件和代码改动量,默认show第一个存储,如果要显示其他存储,后面加stash@{$num}

比如第二个 git stash show stash@{1}

可以加 -p 显示改动内容: git stash show -p

git stash apply

应用某个存储,但不会把存储从存储列表中删除

默认使用第一个存储,即stash@{0},如果要使用其他个,git stash apply stash@{$num}

比如第二个:git stash apply stash@{1}

git stash pop

命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下

默认为第一个stash,即stash@{0},如果要应用并删除其他stash,命令:git stash pop stash@{$num}

比如应用并删除第二个:git stash pop stash@{1}

git stash drop

stash@{$num} :丢弃 stash@{​num} 存储,从列表中删除这个存储

在 Windows Power Shell 中肯能会报错:

1
error: unknown switch `e'’ 

这种问题是因为VSCode中,花括号在 PowerShell 中被认为是代码块执行标识符,若想正常使用,可用反引号 `` ` 进行转义:

1
git stash pop stash@`{0`} 

git stash branch

从最新的 stash 中创建分支

git stash clear

清除堆栈中的所有内容

小妙招

常规 git stash 的一个限制是它会一下暂存所有的文件。有时,只备份某些文件更为方便,让另外一些与代码库保持一致。一个非常有用的技巧,用来备份部分文件:

  1. add 那些你不想备份的文件(例如: git add file1.js, file2.js)
  2. 调用 git stash –keep-index。只会备份那些没有被add的文件。
  3. 调用 git reset 取消已经add的文件的备份,继续自己的工作。

参考资料

文章链接:
https://www.zywvvd.com/notes/tools/git/git-stash/git-stash/