我有一个git repo,其中一个文件几乎每天都会添加新的提交。
我希望在每次提交到新目录时查看该文件的副本。
理想情况下,文件将根据提交时间标记日期(2017_08_24.txt
)。
我已经尝试了git format-patch -o directory --root HEAD
,但这会导致更改日志,而不是查看提交时的完整文件。
由于
答案 0 :(得分:1)
git show <commit>:<file>
会将文件内容放在特定的提交哈希中。您可以使用git log
获取文件的所有提交,然后使用xargs
将其传递给git show
。
以下命令行将提取一系列文件,这些文件具有原始名称和提交给它们的提交哈希:
$ git log --format="%H" /path/to/file | \
xargs -I % sh -c "git show %:/path/to/file > /path/to/target/filename.%"
答案 1 :(得分:1)
这是一个bash脚本。它没有经过全面测试。您可以根据需要进行修改。
#!/bin/bash
branch=$1
file=$2
git log --pretty=%H $branch | while read hash;do
object="$branch:$file"
objecthash=$(git rev-parse $object 2>/dev/null)
if [ "$object" != "$objecthash" ];then
git cat-file -p $objecthash > $(git log -1 --pretty=%cd --date=format:%Y%m%d_%H%M%S $hash).txt
else
echo "$file does not exist in $hash"
fi
done
答案 2 :(得分:0)
对于特定提交,您可以检索文件版本,如
git show 23uggf2f8g:myfile.txt > backupDir/oldVersion.txt
但我认为你必须编写一个脚本来自动完成每次提交