目录
什么是 Git Stash
Git Stash 是 Git 提供的一个非常实用的功能,它允许你临时保存当前的工作进度,并切换到其他分支或者执行其他操作。在需要恢复工作进度时,可以轻松地将保存的内容重新应用回来。
这在日常开发中非常有用,比如当你正在开发一个新功能,突然接到一个紧急的 Bug 需要修复,但是你又不想丢失当前的工作进度。这时候就可以使用 Git Stash 将当前的修改暂时保存起来,然后切换到其他分支进行 Bug 修复,修复完成后再将保存的修改恢复回来继续开发。
基本用法
保存工作现场
使用 git stash
命令可以将当前的修改暂时保存起来:
git stash
执行这个命令后,Git 会将你当前的工作现场(包括暂存区和工作区的修改)保存到一个栈结构中,并将工作区恢复到上一次提交的状态。
查看 Stash 列表
使用 git stash list
命令可以查看当前保存的 Stash 列表:
git stash list
输出示例:
stash@{0}: WIP on master: 049d078 added the index file stash@{1}: WIP on master: c264051 Revert “added file_size”stash@{2}: WIP on master: 21d80a5 added binary file
每个 Stash 都有一个唯一的索引号 stash@{n}
,其中 n
表示第 n
个 Stash。
应用 Stash
使用 git stash apply
命令可以将指定的 Stash 应用到当前分支:
git stash apply [stash@{n}]
如果不指定索引号,则默认应用最新的 Stash(stash@{0}
).
应用 Stash 后,工作区和暂存区的内容会被恢复到 Stash 保存时的状态,但 Stash 本身并不会被删除,需要手动删除。
删除 Stash
使用 git stash drop
命令可以删除指定的 Stash:
git stash drop [stash@{n}]
如果不指定索引号,则默认删除最新的 Stash(stash@{0}
).
使用 git stash clear
命令可以一次性删除所有的 Stash:
git stash clear
进阶技巧
部分 Stash
有时候我们只想保存部分修改,而不是全部,这时可以使用 git stash -p
命令:
git stash -p
该命令会弹出一个交互式界面,让你选择哪些修改需要保存到 Stash 中。
Stash 重命名
使用 git stash save "自定义名称"
可以为 Stash 添加自定义名称:
git stash save “修复 bug #123”
这样可以更好地区分不同的 Stash。
Stash 合并
有时候我们会保存多个 Stash,当需要应用其中的修改时,可以使用 git stash branch
命令将 Stash 中的修改合并到一个新分支上:
git stash branch
[stash@{n}]
这个命令会创建一个新的分支 <new-branch>
,并将指定的 Stash 应用到新分支上。
应用场景
紧急 Bug 修复
当你正在开发新功能,突然接到一个紧急的 Bug 需要修复时,可以使用 Stash 将当前的工作现场暂时保存起来,然后切换到其他分支进行 Bug 修复,修复完成后再将保存的修改恢复回来继续开发。
临时切换分支
有时候你需要临时切换到其他分支进行一些操作,但是当前分支上有未提交的修改,这时候可以使用 Stash 将修改暂时保存起来,等切换回来后再应用回来。
代码冲突解决
在合并分支时,如果出现代码冲突,你可以先使用 Stash 保存当前的修改,然后切换到主分支手动解决冲突,解决完成后再将保存的修改应用回来。
常见问题
如何撤销 Stash 操作
如果你不小心执行了 git stash
命令,想要撤销这个操作,可以使用 git stash pop
命令:
git stash pop
这个命令会将最新的 Stash 应用到当前分支,同时也会从 Stash 列表中删除这个 Stash。
Stash 丢失怎么办
如果不小心将 Stash 列表清空了,或者不小心删除了某个 Stash,可以尝试使用 git fsck
命令来查找是否还有遗留的 Stash:
git fsck –lost-found
这个命令会列出所有未被引用的 Git 对象,其中可能包含你之前保存的 Stash。找到后可以使用 git stash apply
命令将其恢复回来。
Stash 与分支的关系
Stash 是独立于分支的,它存储在 Git 仓库的一个特殊区域中。你可以在任何分支上执行 git stash
命令,保存的 Stash 都会存储在同一个栈结构中。
当你切换到其他分支后,仍然可以使用 git stash apply
命令将 Stash 应用到当前分支上。这使得 Stash 成为一个非常灵活和强大的功能。
总结
Git Stash 是 Git 提供的一个非常实用的功能,它允许你临时保存当前的工作进度,并切换到其他分支或者执行其他操作。通过学习和掌握 Stash 的基本用法和进阶技巧,可以极大地提高日常开发的效率和灵活性。
希望本文对你理解和使用 Git Stash 有所帮助。如果你还有任何疑问,欢迎在下方留言交流。