repostack restore

将各 repo 恢复到 repostack.lock.yaml 记录的精确 revision。

repostack restore
repostack restore --yes

选项

选项说明
-y, --yes跳过未提交修改的确认提示

执行流程

加载配置
  • 读取 repostack.yaml.repostackrc

下载缺失 repo
  • 复用 pull 的逻辑 clone 本地缺失的 repo。

读取 lock 文件
  • 读取 repostack.lock.yaml
  • 如果 lock 文件包含 checksum,会先进行 SHA-256 校验。

对每个 repo 执行恢复
  • 运行 git fetch --all --tags 更新远程引用。
  • 如果 lock 文件中存在该 repo 的 revision,执行 git checkout <revision>
  • 如果 revision 是 "(no commits)",跳过 checkout。

重写 lock 文件
  • 根据恢复后的实际状态重新生成 repostack.lock.yaml

Git 操作

  • git clone(缺失 repo)
  • git fetch --all --tags(每个 repo)
  • git checkout <revision>(恢复到 lock revision)
  • git rev-parse --abbrev-ref HEADgit rev-parse HEAD(重写 snapshot)

适用场景

  • 切换 stack root 的 Git 分支后恢复特定版本组合
  • 复现同事或 CI 记录的问题现场
  • 回到某个已提交的 stack 快照

示例

git checkout <stack-root-commit>
repostack restore