📅  最后修改于: 2023-12-03 15:36:38.210000             🧑  作者: Mango
在 Git 中,Stash(贮藏)是一种用于保存当前未提交的更改的机制,该机制对于在处理繁重的任务时突然需要切换到其他分支或解决紧急问题非常有用。Git stash 命令可以将当前的工作区变更保存到一个新的堆栈状态,并将工作目录重置为当前所在的 Git 分支。
$ git stash [save [-u|--include-untracked] [-p|--patch] [<message>]]
save [<message>]
:将工作目录暂存为一个新的 stash 记录,同时将工作目录重置为上次提交的状态。使用可选的 <message>
参数可以为生成的新 stash 记录添加描述。如果没有提供 <message>
参数,则 Git 会在保存时自动为其添加一条描述。-u|--include-untracked
:将所有未跟踪的文件也加入 stash 记录中,该参数等同于使用 git add -u
。-p|--patch
:将工作目录的变更分成小块并进行暂存。这个选项可以让您选择“哪些更改”应该被 stash 以及应该如何应用它们。list
:列出所有开展状态的 stash 记录,以及可用于应用或删除 stash 记录的各个标识符。apply [<stash>]
:将指定 stash 记录中保存的变更应用到当前的 Git 工作目录中。如果您未对此进行任何其他声明,则将使用最近的快照。pop [<stash>]
:此命令与 apply 相同,但会从 stash 堆栈中删除使用的 stash 记录。如果您未对此进行任何其他声明,则默认使用最新的 stash 记录。drop [<stash>]
:删除一个指定的 stash 记录。如果未指定 stash,则将删除最新的 stash 记录。clear
:清除所有已经 stash 的记录。使用以下命令将当前所有未提交的文件变更存储到新的 stash 记录中:
$ git stash save "my work in progress"
该命令将所有变更保存在一个新的分支中,并重置您的工作环境以匹配您的上一个提交。
您可以使用以下命令列表和删除 stash 记录:
$ git stash list
列出系统中 stash 记录的快照。可以从列表中选取一个 stash 记录应用它:
$ git stash apply stash{1}
应用第二个 stash 快照,并接着使用以下命令来删除 stash:
$ git stash drop stash{1}
如果您仅想暂存一些文件,可以使用 git stash push
:
$ git stash push path/to/your/file.txt
如果您想暂存多个文件,可以使用通配符:
$ git stash push path/to/files/*
此外,您可以添加 -u
或 -a
标志来将未跟踪的文件一起暂存。
如果您只想 stash 某些更改,可以使用 -p
标志:
$ git stash save -p
这将将您输入的每个更改部分分开。对于每个部分,您可以选择:
y
(可以):将该更改加入 stashn
(不应用):不将该更改加入 stashd
(不在此处):将更改中的某些部分推迟到下一个部分中。Git stash 是 Git 强大的常用工具,可以轻松存储机密信息,以方便将来使用。事实上,该工具还可以创建多个 stash 记录,在需要时可以轻松切换到以前的工作进程。这使您可以在不同的分支之间轻松切换,处理技术性问题和一次性任务而无需放弃您正在进行的工作。