什么是 Git Stash?
Git Stash 就像一个临时储物柜,可以让你暂时将当前工作区中的修改保存起来,以便你能够切换到其他分支进行工作,或者进行一些不相关的操作。当需要恢复这些修改时,你可以随时将它们取出来。
为什么使用 Git Stash?
- 快速切换分支:当你正在进行一个功能的开发,但突然需要紧急修复一个 bug 时,你可以使用 stash 将当前的工作保存起来,然后切换到 bug 修复分支。
- 实验性修改:如果你想尝试一些实验性的修改,但又不想提交到版本库,可以先将当前的工作 stash 起来,进行实验。
- 协同开发:在多人协作开发时,如果需要临时中断当前任务,可以将修改 stash 起来,以免影响其他人的工作。
常用命令
-
保存修改:
git stash: 保存所有未提交的修改。git stash save "message": 保存修改并添加描述信息。
-
查看 stash 列表:
git stash list: 列出所有 stash 的 ID 和描述信息。
-
应用 stash:
git stash apply: 应用最新的 stash,stash 不会被删除。git stash pop: 应用最新的 stash 并删除它。git stash apply stash@{1}: 应用指定的 stash。
-
删除 stash:
git stash drop: 删除最新的 stash。git stash drop stash@{1}: 删除指定的 stash。
-
清除所有 stash:
git stash clear: 删除所有的 stash。
示例
Bash
# 正在开发 feature 分支,想切换到 master 分支修复一个 bug
git stash save "feature in progress"
git checkout master
# 修复 bug
git commit -m "fix bug"
# 切换回 feature 分支,恢复之前的修改
git checkout feature
git stash pop
请谨慎使用代码。
注意事项
- stash 的本质:stash 实际上是将当前工作区的修改存储在一个栈中。
- stash 的生命周期:stash 不会自动删除,需要手动删除或应用。
- stash 的冲突:如果 stash 的内容与当前工作区有冲突,应用 stash 时会提示你解决冲突。
- stash 的局限性:stash 并不适合长期保存修改,因为 stash 的数量过多会影响性能。
总结
Git Stash 是一个非常有用的工具,可以帮助你更好地管理你的 Git 工作流。通过熟练掌握 stash 命令,你可以更加灵活地进行版本控制。
更多高级用法
- stash 的部分应用:
git stash apply stash@{1} --index只应用 stash 中的暂存区修改。 - stash 的创建分支:
git stash branch new-branch从 stash 创建一个新的分支。 - stash 的查看 diff:
git stash show查看 stash 的 diff 信息。
建议:
- 养成良好的 stash 习惯:在切换分支或进行实验性修改前,及时将当前工作 stash 起来。
- 定期清理 stash:删除不再需要的 stash,保持 stash 列表的整洁。
- 使用描述信息:为每个 stash 添加描述信息,方便后续查找和恢复。