git stash用法详解

169 阅读2分钟

什么是 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 添加描述信息,方便后续查找和恢复。