git - 将每个 git commit 转换为单独的文件夹
问题描述
我有一个项目,我分几个独立的步骤完成了,每个步骤都相互依赖。
我的提交历史如下所示:
p1 -> p2 -> ... -> pn
每个部分都可以单独运行,我想将项目的每个步骤导出为一个独立的单元。例如:
project/
p1/
p2/
...
pn/
每个目录p
在提交时包含分支中的所有文件和文件夹(存在p1
并保持不变的文件pn
应该冗余地包含在每个目录中)。如何将每个单独的提交转换到自己的文件夹中?
解决方案
使用脚本,您可以获得所有提交哈希,并且对于每个提交,克隆存储库并签出到所需的提交:
#/bin/bash
commits=$(git log --pretty=format:"%h")
dest=/path/to/the/destination/folder
repo=git@github.com:username/repository.git
for commit in $commits; do
echo $commit
git clone -q $repo $dest/$commit
cd $dest/$commit
git checkout -q $commit
done
在您的存储库文件夹中运行此脚本。
推荐阅读
- reactjs - React 路由循环 - 根据路由链接显示确切信息
- numpy - 累加列表元素,同时为每个累加添加一个常数
- python - Python 3.9.7 终止执行且没有错误
- mysql - 如何在查询集中获取唯一值?
- java - Dependency-Check-Maven 插件也扫描兄弟项目依赖
- php - Laravel 6:使用 virgil/crypto 加密错误:调用未定义函数 vscf_ctr_drbg_new_php
- java - 如果在响应中返回 InputStream 是否需要关闭?
- java - 存在 java 类时在运行时出现 ClassNotFoundException
- magento2 - Magento 2 FPC 在库存更新后完全清除(REST API)
- powerbi - Client Wise 报告的查询字符串中的参数