“git stash”是Git中用于临时保存未提交修改的命令,核心作用是隔离工作区状态,避免切换分支或执行其他操作时产生冲突。
一、暂存操作流程
- 查看当前状态:执行git status确认存在未提交的修改(包括已跟踪文件的修改、新增文件等)。
- 添加修改到暂存区(可选):若需部分暂存,可通过git add <file>选择文件;若需暂存所有修改,直接执行git add .。
- 执行暂存:使用git stash save '标识信息'(如git stash save "fix-login-bug"),将修改存入栈结构。若省略标识,Git会生成默认名称(如stash@{0})。
二、暂存记录管理
- 查看记录:通过git stash list显示所有暂存记录,格式为stash@{index}: WIP on <branch>: <message>,其中index为序号,message为自定义标识或默认描述。
- 存储位置:暂存数据存储在.git/refs/stash(最新记录指针)和.git/logs/refs/stash(完整操作日志)中,用户无需直接操作这些文件。
- 多暂存区分:若未指定标识多次执行git stash,可通过git stash list结合修改内容推断差异;建议始终使用save <message>明确标识,避免混淆。
三、恢复暂存内容
- 恢复最新暂存:
git stash pop:恢复并删除栈顶记录(若恢复后无冲突,记录自动移除;冲突时需手动解决后执行git stash drop)。
git stash apply:恢复但保留记录,适用于需多次恢复或测试的场景。
- 恢复指定暂存:通过git stash pop stash@{index}或git stash apply stash@{index}指定序号恢复,例如git stash apply stash@{1}。
四、删除暂存记录
- 删除单条记录:执行git stash drop stash@{index},如git stash drop stash@{0}。
- 清空所有记录:使用git stash clear,谨慎操作以避免丢失未恢复的修改。
应用场景示例:
在开发新功能时遇到紧急Bug需切换分支修复,可通过git stash暂存未完成代码,修复后用git stash pop恢复,避免无意义提交或直接切换导致代码丢失。