Git_Stash__0">一、Git Stash 概述
在开发的时候经常会遇到切换分支时需要你存储当前的更改,如果你暂时不想应用当前更改也不想放弃更改,那么你可以使用 git stash先将其隐藏存储,这样代码就会变成未修改的状态,等解决其他问题后,在将其隐藏的存储显示,就可以继续之前的工作了。
Git stash
是一个非常有用的 Git 命令,它允许你临时保存你的工作目录中的更改,而不会提交这些更改到 Git 仓库中。这在你需要切换分支处理其他任务,但当前分支上的工作尚未完成时特别有用。
当你执行 git stash 命令时,Git 会创建一个新的提交对象,该对象记录了工作目录的当前状态,以及当时 HEAD提交的状态。这个提交对象不会被分配到任何分支上,但可以通过 git stash list 命令查看。
Git_Stash__7">二、Git Stash 命令的使用
Git stash 提供了多种操作来管理你的暂存更改。以下是一些常用的 Git stash 命令:
-
保存当前工作目录和索引的状态,然后将它们回滚到 HEAD(隐藏存储)
-
你可以为 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.
为了使用命令演示,这里不借用VScode提供的可视化操作,实际上,熟悉使用命令后操作会更加快。
隐藏后,已经看不到修改记录了,左侧更改的文件全部被隐藏。
现在就可以将分支自由切换了
查看隐藏的修改
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 可以使你的开发流程更加流畅和高效。