问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Git stash 暂存你的更改(隐藏存储)

创作时间:
作者:
@小白创作中心

Git stash 暂存你的更改(隐藏存储)

引用
CSDN
1.
https://m.blog.csdn.net/qq_54140719/article/details/145031385

一、Git Stash 概述

在开发的时候经常会遇到切换分支时需要你存储当前的更改,如果你暂时不想应用当前更改也不想放弃更改,那么你可以使用 git stash先将其隐藏存储,这样代码就会变成未修改的状态,等解决其他问题后,在将其隐藏的存储显示,就可以继续之前的工作了

Git stash
是一个非常有用的 Git 命令,它允许你临时保存你的工作目录中的更改,而不会提交这些更改到 Git 仓库中。这在你需要切换分支处理其他任务,但当前分支上的工作尚未完成时特别有用。

当你执行 git stash 命令时,Git 会创建一个新的提交对象,该对象记录了工作目录的当前状态,以及当时 HEAD提交的状态。这个提交对象不会被分配到任何分支上,但可以通过 git stash list 命令查看。

二、Git Stash 命令的使用

Git stash 提供了多种操作来管理你的暂存更改。以下是一些常用的 Git stash 命令:

  • 保存当前工作目录和索引的状态,然后将它们回滚到 HEAD(隐藏存储)
    git stash push

或者可以简写为
git stash

  • 你可以为 stash 提供一个带消息的存储,以便更容易地识别
    git stash push -m "message"

  • 列出所有的 stash 条目
    git stash list

  • 应用指定的 stash 条目到当前工作目录,但不从 stash 列表中删除它
    git stash apply

  • 应用最近的 stash 条目,并从 stash 列表中删除它
    git stash pop

  • 删除一个指定的 stash 条目
    git stash drop

  • 清除所有的 stash 条目
    git stash clear

三、示例

比如我现在有两个分支:
两个分支当前处于不同步的状态。

现在我在master分支有了修改:

然后有突发情况,需要切换到dev分支解决Bug

当两个分支不同步时,在VSCode中带着更改切换分支会出现以上提示:

  • 强制迁出:是放弃当前更改
  • 迁移更改:将当前更改迁移到切换的分支
  • 存储并迁出:就是使用git stash 隐藏存储当前的更改

但是我现在不想将其更改应用,也不想放弃我的更改,此时我需要使用git stash.

为了使用命令演示,这里不借用VScode提供的可视化操作,实际上,熟悉使用命令后操作会更加快。

隐藏存储

git stash push -m 'message'

如果不需要附带消息 可以直接使用
git stash

隐藏后,已经看不到修改记录了,左侧更改的文件全部被隐藏。

现在就可以将分支自由切换了

查看隐藏的修改

git stash list

恢复隐藏存储

git stash pop

恢复上次存储,并删除该次隐藏存储

注意你可以在任何分支恢复,确保你当前在正确的分支‘

现在我切换到master分支,恢复我切换分支前的修改。

这里就恢复成功了,可以继续前面未完成的工作了。

四、注意事项

  • 使用 stash 时,未跟踪的文件默认不会被保存。如果你想包含这些文件,可以使用 -u 或 --include-untracked 选项。

  • 如果在应用 stash 时遇到冲突,stash 条目不会自动删除。你需要手动解决冲突并使用 git stash drop 来删除它。

  • 如果你不小心删除了一个重要的 stash 条目,你可能需要使用一些高级 Git 命令来恢复它,例如 git fsck 和 git reflog。

  • 当有多个stash 条目时,你可以通过git stash apply stash@{对应的条目},该命令应用后不会删除条目,如果你想应用后删除,可以使用git stash pop stash@{对应的条目}

Git stash 是一个强大的工具,可以帮助你管理工作目录中的更改,而不会影响 Git 仓库中的提交历史。正确使用 Git stash 可以使你的开发流程更加流畅和高效。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号