如何从 git 中提取文件的每个历史版本的副本?

如何从 git 中提取文件的每个历史版本的副本?

因为它是一个二进制文件,所以查看差异对我来说没有多大用处。

答案1

我建议写一个小脚本,git log如下git show所示:

#!/usr/bin/env bash
DONE=false
FILE="$1"
EXPORTFILE=/tmp/exportfile
git log --pretty=format:"%h" "${FILE}" |until $DONE
do read || DONE=true
  echo "Exporting $FILE as of commit $REPLY to $EXPORTFILE-$REPLY"
  git show $REPLY:"$FILE" > $EXPORTFILE-$REPLY
done

这会将当前分支中第一个参数的每个已知提交版本导出到/tmp/exportfile-12345678

为什么是until$REPLY而不只是while read $commit?你会错过最后一行/提交。阅读这个问题了解更多信息。

相关内容