Git Stash——拯救纠结伦的你

Git Stash 命令详解

前言:
从前,开发的新功能存在思绪未理清的情况,又需要拉取项目最新修改时,十分纠结,不想立即commit又想保证代码不丢失。后来,我了解到GIt 有一个神奇的命令——git stash,有了它,妈妈再也不用担心我的代码暂存问题了。
简介:
git stash 是 Git 的一个强大命令,允许你在当前工作目录的未提交更改(暂存区中的更改和未暂存的更改)中“藏起来”,以便稍后恢复它们。 这非常适合在需要切换分支、修复错误或进行其他任务时,临时保存你的工作,而无需进行提交。

1. 基本用法

  • git stashgit stash push: 将当前工作区和暂存区的更改保存到一个名为 "stash" 的列表中。 默认情况下,所有未暂存的更改都将被保存,但暂存的更改不会被保存(除非你使用选项)。
  • git stash list: 列出当前 stash 列表。 每个 stash 都会有一个唯一的 ID (例如 stash@{0}),以及描述性名称 (通常是提交哈希)。
  • git stash apply stash@{0}: 将 stash@{0} (第一个 stash) 恢复到工作目录,同时将该 stash 从 stash 列表中移除。 stash@{0} 通常指第一个创建的 stash。
  • git stash apply: 将最新的 stash 恢复到工作目录,并将其从 stash 列表中移除。 如果存在多个 stash,则会应用最新的一个。
  • git stash pop: 将最新的 stash 恢复到工作目录,并将该 stash 从 stash 列表移除。 这是一个常用的 git stash 命令之一。
  • git stash drop stash@{0}: 删除 stash@{0} (第一个 stash) 。 小心使用!
  • git stash drop: 删除最新的 stash。
  • git stash clear: 删除所有 stash。

2. 选项 (Flags)

  • -u--include-untracked: 包含未跟踪的文件。 默认情况下,git stash 不保存未跟踪的文件。
  • -k--keep-index: 只保存工作区中的更改,而不保存暂存区中的更改。 这对于只保存未提交的更改而保持暂存区不变非常有用。
  • -it--include-untracked --keep-index: 同时包含未跟踪的文件和只保存工作区中的更改。
  • -m <message>--message <message>: 指定 stash 的消息。 建议使用此选项为每个 stash 添加一个有意义的描述。
  • -p--patch: 交互式地选择要保存哪些更改。 这允许你精细地控制哪些更改被保存到 stash 中。 这个选项会打开一个 diff 编辑器,允许你选择要保存的更改行。
  • --attach-message=<message>: 在创建 stash 时自动添加指定的消息。 通常与 -m 选项一起使用。

3. 高级用法

  • git stash create: 创建一个新的 stash,但不会立即将其应用到工作目录。 这个命令主要用于在脚本或自定义命令中使用。
  • git stash branch <branchname>: 创建一个新分支,并应用最新的 stash。 这个新的分支会包含 stash 中保存的更改。 然后这个新分支就会被丢弃。

4. 注意事项

  • Stash 是本地的: Stash 存储在你的本地 Git 仓库中,不会被共享到其他仓库。
  • Stash 并不是提交: Stash 只是你更改的快照,并不是提交。 这意味着它不包含提交信息,你仍然需要进行提交才能将更改保存到版本控制历史中。
  • Stash 可能会变得复杂: 如果使用 git stash 命令进行多次应用和删除操作,stash 列表可能会变得非常复杂。 因此,建议为每个 stash 添加一个描述性消息,并定期清理 stash 列表。
  • Stash 解决冲突: 当你应用 stash 时,可能会遇到冲突。 你需要手动解决这些冲突,就像解决普通提交冲突一样。

5. 示例流程

  1. 修改文件: 你正在进行一些开发工作,对一些文件进行了修改。
  2. 保存更改: 你不想提交这些修改,因为你正在尝试解决一个问题,并且可能需要回滚。
  3. 使用 git stash: 你可以使用 git stash push -m "WIP: Feature X" 命令将这些修改保存到 stash 中。
  4. 切换分支: 现在你可以安全地切换到另一个分支进行工作,或者修复一个错误。
  5. 恢复更改: 在完成后,你可以使用 git stash pop 命令将 stash 中保存的更改恢复到你的工作目录。

参考资源:

posted @ 2025-12-23 16:18  galaxy9  阅读(0)  评论(0)    收藏  举报