用 Git Stash 命令,让你分支切换更从容
2023-12-31 08:33:52
先说结论,如果你是个还在 Git 的学习入门阶段的同学,并且在分支管理的场景下还没有什么经验,建议你还是可以先看看这篇文章。因为从实践中来,并且实践中用这个命令,你会感觉到这应该是 Git 中使用频次最高的命令之一,真的太方便了。
Git Stash 命令
Git Stash 命令是一个用来暂存你当前工作区未提交(unstaged)的改动的命令,这样你就可以切换到其他分支或执行其他任务,而不会丢失你的工作。
当你在 Git 仓库中工作时,你可能会发现自己需要在不同的分支上进行切换。例如,你可能在一个分支上开发新功能,而在另一个分支上修复错误。当你切换分支时,Git 会自动将你当前工作区中的改动暂存起来,这样你就可以在切换回原来的分支时继续你的工作。
如果你想在切换分支之前手动暂存你的改动,你可以使用 Git Stash 命令。这将把你的改动保存到一个临时存储区中,这样你就可以在需要的时候恢复它们。
Git Stash 命令的基本用法
要使用 Git Stash 命令,你只需在命令行中输入以下命令:
git stash
这将把你的改动保存到一个临时存储区中,并输出以下信息:
Saved working directory and index state WIP on master: 666df8d
这表示你的改动已经被保存到一个名为 "WIP" 的栈中,并且你的当前分支是 "master"。
要恢复你的改动,你可以使用 Git Stash Pop 命令。这将从临时存储区中恢复你的改动,并输出以下信息:
Reinstate working directory and index state from WIP on master
这表示你的改动已经从临时存储区中恢复到你的工作区中。
Git Stash 命令的其他用法
除了基本用法之外,Git Stash 命令还有一些其他用法。例如,你可以使用以下命令查看临时存储区中的改动:
git stash list
这将输出以下信息:
stash@{0}: WIP on master: 666df8d
这表示临时存储区中只有一个栈,名为 "WIP",并且它包含了你从 "master" 分支切换到另一个分支时保存的改动。
你也可以使用以下命令查看特定栈中的改动:
git stash show
这将输出以下信息:
diff --git a/README.md b/README.md
index 666df8d..f68df0a 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,7 @@
Hello, world!
+This is a new line.
This is another line.
-This is a deleted line.
这表示栈 "WIP" 中包含了一个对 README.md 文件的改动,该改动添加了一行新文本并删除了一行文本。
你也可以使用以下命令将特定栈中的改动应用到你的工作区中:
git stash apply
这将把栈 "WIP" 中的改动应用到你的工作区中,并输出以下信息:
Applied stash@{0}
这表示栈 "WIP" 中的改动已经应用到你的工作区中。
你还可以使用以下命令删除临时存储区中的改动:
git stash clear
这将删除临时存储区中的所有栈,并输出以下信息:
Dropped refs/stash@{0} (was 666df8d)
这表示临时存储区中的所有栈都已删除。
总结
Git Stash 命令是一个非常有用的命令,可以让你在分支切换时更加轻松。通过使用 Git Stash 命令,你可以暂存你的改动,这样你就可以在需要的时候恢复它们。