repostack restore
将各 repo 恢复到 repostack.lock.yaml 记录的精确 revision。
repostack restore
repostack restore --yes
选项
| 选项 | 说明 |
|---|---|
-y, --yes | 跳过未提交修改的确认提示 |
执行流程
加载配置- 读取
repostack.yaml 和 .repostackrc。
repostack.yaml 和 .repostackrc。下载缺失 repo- 复用
pull 的逻辑 clone 本地缺失的 repo。
pull 的逻辑 clone 本地缺失的 repo。读取 lock 文件- 读取
repostack.lock.yaml。 - 如果 lock 文件包含
checksum,会先进行 SHA-256 校验。
repostack.lock.yaml。checksum,会先进行 SHA-256 校验。对每个 repo 执行恢复- 运行
git fetch --all --tags 更新远程引用。 - 如果 lock 文件中存在该 repo 的
revision,执行 git checkout <revision>。 - 如果 revision 是
"(no commits)",跳过 checkout。
git fetch --all --tags 更新远程引用。revision,执行 git checkout <revision>。"(no commits)",跳过 checkout。重写 lock 文件- 根据恢复后的实际状态重新生成
repostack.lock.yaml。
repostack.lock.yaml。Git 操作
git clone(缺失 repo)git fetch --all --tags(每个 repo)git checkout <revision>(恢复到 lock revision)git rev-parse --abbrev-ref HEAD和git rev-parse HEAD(重写 snapshot)
适用场景
- 切换 stack root 的 Git 分支后恢复特定版本组合
- 复现同事或 CI 记录的问题现场
- 回到某个已提交的 stack 快照
示例
git checkout <stack-root-commit>
repostack restore