在 git stash 时有一个保持index是什么作用
要理解 Git Stash 中「保持 Index(暂存区)」的作用,首先得先理清 Git 工作区的三个核心区域:
- 工作区:你正在编辑的文件(未 git add)
- 暂存区(Index):已经 git add 但未 git commit 的文件
- 版本库:已经 git commit 的文件
「保持 Index」的核心作用
「保持 Index」对应的是 Git 命令行的 git stash save --keep-index(新版 Git 是 git stash push --keep-index),它的核心作用是:
执行 stash 时,只暂存「工作区中未加入暂存区的修改」,而保留暂存区(Index)的内容不变。
通俗解释 + 场景举例
假设你有以下状态:
- 文件 A:修改后已
git add(在暂存区) - 文件 B:修改后未
git add(仅在工作区)
情况 1:不勾选「保持 Index」(默认 stash)
执行 stash 后:
- 暂存区(A)+ 工作区(B)的修改都会被暂存到 stash 中
- 工作区 + 暂存区都会回到上一次 commit 的干净状态
- 此时你既看不到 A 的修改,也看不到 B 的修改
情况 2:勾选「保持 Index」(--keep-index)
执行 stash 后:
- 只有工作区的 B 会被暂存到 stash 中
- 暂存区的 A 会被保留(依然在暂存区,工作区也保留 A 的修改)
- 此时你仍能看到 A 的修改(暂存区+工作区都在),但 B 的修改被暂存走了
典型使用场景
这个功能最常用在「验证暂存区代码」的场景:
比如你已经把要提交的代码 git add 到暂存区,想先跑一遍测试/代码检查,确认这部分代码没问题,但又不想提交;同时工作区还有一些未完成的、不想被测试影响的修改。
此时勾选「保持 Index」:
- 把工作区的未完成修改 stash 走,让工作区变干净
- 保留暂存区的待提交代码,你可以放心跑测试/检查
- 测试通过后,直接
git commit提交暂存区代码即可 - 之后再用
git stash pop恢复之前暂存的未完成修改
PhpStorm 中的对应逻辑
在 PhpStorm 的 Git Stash 弹窗中:
- 勾选「Keep Index」→ 对应
git stash push --keep-index - 不勾选 → 对应默认的
git stash push(暂存所有修改:工作区+暂存区)
总结
- 「保持 Index」的核心是保留暂存区的修改,只暂存工作区未 add 的内容;
- 主要用于「验证暂存区代码」的场景,避免暂存区内容被 stash 清空;
- 对比默认 stash:默认会清空暂存区+工作区,而「保持 Index」只清空工作区未 add 的部分。
版权属于:Joyber
本文链接:https://blog.qqvbc.com/default/1428.html
转载时须注明出处及本声明