git sash 命令用于将当前工作区暂存起来,方便切换分支之后恢复。
git sash 命令用于临时保存工作区中的更改,以便您可以切换分支或者处理其他任务,而无需提交当前的工作进度。
详细讲解如下:
假设你正在 dev 分支上开发一个功能,开发到一半的时候,需要先处理一个紧急 Bug。这时候,git stash 命令就派上用场了,我们可以执行 git stash 命令将当前在 dev 分支上的改动暂存起来,然后切换到 bugfix 分支上修复 bug。修复完之后,再切回 dev 分支,然后再通过 git stash pop 恢复在 dev 分支中的改动,这样就避免了将未完成的改动提交到仓库中。
暂存当前工作区中的改动可以直接使用 git stash 命令,或者 git stash save "备注" 命令,它们的区别就是一个带备注,一个不带备注。
# 不带备注
git stash
# 带备注,写上备注信息方便查找和管理
git stash save "备注"
应用暂存的工作区改动,可以使用 git stash apply 命令,或者 git stash pop 命令。两者区别是 apply 命令不会删除暂存记录,而 pop 命令会删除暂存记录。
# 应用暂存到当前分支,不会删除暂存记录
git stash apply
# 应用暂存到当前分支,并删除暂存记录
git stash pop
查看暂存列表可以使用 git stash list 命令,它会列出当前仓库中所有暂存记录。
git stash list
列出的列表如下面这般:
stash@{0}: On 6.1.0: 6.1.0备注
stash@{1}: WIP on main: 7423bbb main
删除暂存记录可以使用 git stash drop 命令,或者 git stash clear 命令。两者区别是 drop 命令可以指定删除的记录,而 clear 命令则会把所有暂存记录都删除。
# 删除ID为 0 的记录,ID 可以通过 git stash list 查看
git stash drop stash@{0}
# 删除所有暂存记录
git stash clear
如果存在多个暂存记录,直接执行 git stash apply 命令的话,它会应用最新的暂存记录,也就是 ID 为 0 的记录。
如果你想应用特定的 stash,可以使用其 ID
# 假设 ID 为 n,则执行如下命令,ID 可以通过 git stash list 查看
git stash apply stash@{n}
如果你想应用所有 stash,你需要逐个应用它们。通常情况下,你不会一次性应用所有 stash,因为它们可能包含不同的工作内容,相互之间可能会产生冲突。如果你确实需要应用所有 stash,你可以按照它们的顺序依次应用,比如:
git stash apply stash@{0}
git stash apply stash@{1}
git stash apply stash@{2}
当你在 dev 分支上使用 git stash 命令后,再切换到另一个分支上使用 git stash apply,这是完全可行的。事实上,这也是 git stash 命令的一个常见用途之一。