stash

简介

暂存工作副本更改。

vb stash SUBCOMMAND ARGS...

示例

  • 将当前工作副本中所有未提交的更改暂存在仓库:

$ vb stash save -m "stash测试"
UNMANAGE a.txt
UNMANAGE b.txt
UNMANAGE c.txt
UNMANAGE d.txt
stash 1 saved
  • 列出当前仓库里所有 stash 列表:

$ vb stash ls -v
    1: [0301c31f8e72af] on 2024-11-25 20:16:07
       stash测试
          ADD a.txt
          ADD b.txt
          ADD c.txt
          ADD d.txt
  • 将当前仓库与基线做对比,显示差异:

$ vb stash diff
ADDED a.txt
Index: a.txt
==================================================================
--- /dev/null
+++ a.txt
@@ -0,0 +1,1 @@
+stash test1 

ADDED b.txt
Index: b.txt
==================================================================
--- /dev/null
+++ b.txt
@@ -0,0 +1,1 @@
+stash test2 

ADDED c.txt
Index: c.txt
==================================================================
--- /dev/null
+++ c.txt
@@ -0,0 +1,1 @@
+stash test3 

ADDED d.txt
Index: d.txt
==================================================================
--- /dev/null
+++ d.txt
@@ -0,0 +1,1 @@
+stash test4
  • 将 stash 列表中的所有保存的更改应用到当前工作目录,并从仓库里删去更改:

$ vb stash pop
ADDED  a.txt
ADDED  b.txt
ADDED  c.txt
ADDED  d.txt
Popped stash:
    1: [0301c31f8e72af] from 2024-11-25 20:16:07
       stash测试
 "vb undo" is available to undo changes to the working checkout.

说明

通过各种子命令实现在仓库和工作副本之间对尚未准备好提交的更改进行管理的操作,以便后续应用这些更改或在不同分支上工作时使用。

与其他版本控制系统(如 Git)中的 stash 命令类似,Visionbyte 中的 stash 将当前工作目录中的修改暂存起来,以便在需要时恢复或者应用到其他地方。

适应场景

  • 切换分支

正在开发一项功能,但需要切换到另一个分支来修复错误或审查拉取请求,可以先保存当前更改,切换分支并稍后返回该工作。

  • 处理中断

正在进行编码并收到修复关键问题的紧急请求。存储当前更改以保存进度,处理完关键问题后,再返回到原始任务。

  • 尝试改变

尝试一种新方法或重构代码,但不确定它是否有效,可以在开始实验之前存储当前工作,如果实验失败,可以重新应用存储的更改。

  • 清理工作目录

当前工作目录很混乱,需要暂时搁置更改以测试某些内容或切换上下文,可以 stash 清理工作目录而不提交未完成的工作。

  • 保存正在进行的工作

正在开发一项功能,但需要暂时离开。存储现在已开发工作以保留当前进度并稍后恢复。

  • 将存储应用到不同的分支

想要将存储中的更改应用到与创建该存储的分支不同的分支,可以签出目标分支并应用存储。

vb stash

将工作副本中的当前更改保存在本地仓库,每次将工作副本中的当前更改保存在本地仓库都会得到一个索引号 STASHID 。

子命令

snapshot|save

vb stash snapshot|save [-m|--comment COMMENT] [PATH...]

将工作目录中的当前更改保存在仓库里,然后将工作目录恢复到上次签入状态。如果提供了 PATH 参数,那么仅保存和恢复指定的文件。

当且仅当没有其他参数时,可以省略 savesnapshot 的作用与 save 相同,但省略了恢复操作,将保持工作目录签出状态不变。

可以添加 --comment "" 添加一条描述性消息,说明为什么保存这些更改。

list|ls

vb stash list|ls [-v|--verbose] [-W|--width NUM]

列出当前存储的所有 stash 列表,这将列出当前仓库里所有 stash 命令的变更集,包括它们的索引、保存时间、提交消息等信息。

如果使用 -v--verbose ,则显示每个 stash 列表中各个文件的详细信息。

apply

vb stash apply [STASHID]

STASHID 是每次将工作目录中的当前更改保存在本地仓库都会得到一个索引号,可以通过 vb stash list 命令获取。

该命令是通过 STASHID 将 stash 列表中指定的更改应用到当前工作目录中。

apply 命令在应用该更改后会从存储中保留该更改。

pop

vb stash pop [STASHID]

pop 命令与 apply 类似,只是在应用该更改后会从存储中删除该更改。

drop|rm

vb stash drop|rm [STASHID] [-a|--all]

删除 stash 列表中指定索引号的更改。如果使用 -a|--all 标志,则忽略整个仓库保存的更改。

警告

这将永久删除指定索引的 stash,慎用此命令。

单个 drop 是可撤销的,但 -a|--all 则不可撤销。

show|cat

vb stash show|cat [STASHID] [DIFF-OPTIONS]

显示指定索引号与基线差异。

gshow|gcat

vb stash gshow|gcat [STASHID] [DIFF-OPTIONS]

显示指定索引号与基线差异。 gshowgcat 可以使用 gdiff 命令代替内部逻辑差异。

diff|gdiff

vb stash diff|gdiff [STASHID] [DIFF-OPTIONS]

显示当前工作目录的差异,以及应用 STASHID 更改的内容后该目录的差异。使用 gdiff 命令代替内部逻辑差异。

clear

vb stash clear

清空所有存储的 stash 列表。

警告

这会将所有的暂存内容都删除,慎用此命令。