Git怎么暂存当前工作进度_Git如何用stash保存未完成的修改【技巧】

老涛酱_4087

老涛酱_4087

2026-03-20

987人浏览

原创

默认 git stash 不会丢掉未跟踪文件,仅暂存已跟踪的修改;加 -u 可包含未跟踪文件,-a 还包括被忽略文件;stash 是本地栈式列表,不跨仓库同步,不可 cherry-pick 或 revert。

git怎么暂存当前工作进度_git如何用stash保存未完成的修改【技巧】

stash 会丢掉未跟踪的文件吗

默认不会暂存,但也不会丢掉——它只是忽略。执行 git stash 时,只保存已跟踪(tracked)且被修改的文件,所有 git status 显示为 untracked 的新文件都不会进入 stash。

  • 如果需要一并暂存未跟踪文件,加 -u 参数:git stash -u
  • 想连忽略文件(.gitignore 里的)也一起 stash?用 -a:git stash -a,但极少需要,容易误带临时配置或构建产物
  • 不确定当前 stash 包含什么?用 git stash show -p stash@{0} 看具体差异

stash 后切换分支再 pop,为什么文件没恢复

不是 stash 失效了,而是 pop 时发生了冲突,Git 默认中止操作并留下冲突标记,但不报错提示“失败”,看起来像“没反应”。

Cnb Cool Git
Cnb Cool Git

CNB 云原生构建平台的 Git 操作技能,支持代码克隆、提交、推送、分支管理、Merge Request 管理、流水线触发与结果读取。初次使用需收集用户的 Git 用户名和邮箱。

下载
  • 执行 git stash pop 后检查 git status:如果有 unmerged 或冲突文件,说明 pop 卡在半途
  • 想强制应用并自动丢弃冲突部分?不行,Git 不提供这种模式;正确做法是先解决冲突,再 git add + git commit 或 git stash drop
  • 更安全的做法是先 git stash apply(不自动 drop),确认无误后再手动 git stash drop

多个 stash 怎么区分和找回

Git 把 stash 当成栈,但实际是带时间戳的列表,stash@{0} 是最近一次,stash@{1} 是上一次……但靠数字记容易错。

  • 用 git stash list 查看全部,输出里包含提交简写和备注,例如:stash@{0}: WIP on main: 8a3f2c1 fix login timeout
  • 创建 stash 时加描述,比默认的 WIP on xxx 有用得多:git stash push -m "wip: api v2 migration"
  • 想恢复某个特定 stash?别只写 git stash pop,明确指定:git stash pop stash@{2} 或 git stash apply stash@{2}

stash 和 cherry-pick / revert 混用会出问题吗

不会直接冲突,但语义混乱。stash 是本地暂存机制,不产生 commit;cherry-pick 和 revert 都依赖 commit 对象。如果你从 stash pop 出来的修改再去 cherry-pick 其他分支的 commit,Git 完全感知不到 stash 来源——它只认工作区状态。

  • stash 本身不可被 cherry-pick,因为不是 commit;想复用某次 stash 的修改到其他分支,只能先 apply,再 commit,再 cherry-pick 这个新 commit
  • 误把 stash 当 commit 回退?git revert 对 stash@{0} 会报错:fatal: bad revision 'stash@{0}'
  • 最常被忽略的一点:stash 不跨仓库同步,clone 新环境后,所有 stash 都不存在——它只存在本地 .git/refs/stash,别把它当备份用

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

git

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.18

4987

5

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

2023.08.10

2228

6

自建git服务器
自建git服务器

git服务器是目前流行的分布式版本控制系统之一,可以让多人协同开发同一个项目。本专题为大家提供自建git服务器相关的各种文章、以及下载和课程。

2023.07.05

5479

9

git和svn的区别
git和svn的区别

git和svn的区别:1、定义不同;2、模型类型不同;3、存储单元不同;4、是否拥有全局版本号;5、内容完整性不同;6、版本库不同;7、克隆目录速度不同;8、分支不同。php中文网为大家带来了git和svn的相关知识、以及相关文章等内容。

2023.07.06

1660

6

git撤销提交的commit
git撤销提交的commit

Git是一个强大的版本控制系统,它提供了很多功能帮助开发人员有效地管理和控制代码的变更,本专题为大家提供git 撤销提交的commit相关的各种文章内容,供大家免费下载体验。

2023.07.24

954

5

git提交错误怎么撤回
git提交错误怎么撤回

git提交错误撤回的方法:git reset head^:撤回最后一次提交,恢复到提交前状态。git revert head:创建新提交,内容与之前提交相反。git reset :使用提交的 sha-1 哈希撤回指定提交。交互式舞台区:标记要撤回的特定更改,然后提交,排除已撤回更改。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.09

3577

7

git怎么对比两个版本的文件内容
git怎么对比两个版本的文件内容

要对比两个版本的 git 文件,请使用 git diff 命令:git diff 比较工作树和暂存区之间的差异。git diff 比较两个提交或标签之间的差异。git diff 输出显示差异块,其中 + 表示添加的行,- 表示删除的行, 表示修改的行。可使用 gitkraken、meld、beyond compare 等可视化工具更直观地查看差异。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.09

3261

6

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

2026.09.30

20

10

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

2026.09.30

40

14

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
vscode手册
vscode手册

共0课时 | 0人学习

Git 教程
Git 教程

共21课时 | 7.9万人学习

Git版本控制工具
Git版本控制工具

共8课时 | 1.8万人学习