我的项目中有一个版本文档.ai
,现在我想导出Git存储库为该文件保存的每个“快照”。
任何批次/半自动解决方案?
我有很多提交,没有太多意图逐个导出它们。
答案 0 :(得分:10)
要将文件的所有修订版导出到给定文件夹,可以在Bash中使用此循环:
for sha in `git rev-list HEAD -- path/to/file`; do
git show ${sha}:path/to/file > path/to/exportfolder/${sha}_doc.ai
done
当然,你可以自定义它。
将代码段复制到文本文件中,并将path/to/file
替换为要导出的文件的实际路径(在repo内)。将path/to/exportfolder
替换为要将文件导出到的实际路径(导出文件夹必须存在)。您也可以修改导出的文件名,在此版本中它使用格式“_doc.ai”;如果你想使用带空格的文件或路径名,请确保使用引号。
此版本将从当前签出的修订版本(HEAD
)开始,并将历史记录转到可从祖先树中的HEAD
到达的所有修订版本。这意味着您应该查看要开始导出的最新修订版。
答案 1 :(得分:4)
很快,但是因为没有其他人想出来的东西:
mkdir snapshots
FILE=YourFile.ai
i=1
for COMMIT in $(git log --oneline $FILE | cut -f 1 -d " "); do
git checkout $COMMIT $FILE;
cp $FILE snapshots/$i-$COMMIT.ai;
(( i = i + 1 ))
done
然后您的目录snapshots
包含该文件的所有版本。这些名称由一个数字 1..n 组成,它随着每个版本的年龄和相应的提交以及文件扩展名.ai
而增加。
P.S。:不要忘记在此之后更新FILE
(git checkout HEAD $FILE
)并且不要将文件夹快照添加到repository
。 :)