我有一个名为/renders
的本地文件夹/目录/ repo。当我ls -a
时,我得到了
➜ renders git:(master) ls -a
.git
corner_desk.jpg
multi-person_desk.jpg
两个图像文件中的每一个都提交了许多修订版。需要将两个图像文件的所有版本/修订版发送给未经使用且不使用Git的人进行审阅。因此他们无法浏览提交历史记录。从Git repo文件夹创建一个新文件夹的最有效方法是什么,可以发送给他们(通过电子邮件发送,Dropboxed,whatevs)?当这个新生成的文件夹为ls -a
时,它应返回类似
➜ renders ls -a
corner_desk_01.jpg
corner_desk_02.jpg
corner_desk_03.jpg
corner_desk_04.jpg
corner_desk_05.jpg
multi-person_desk_01.jpg
multi-person_desk_02.jpg
multi-person_desk_03.jpg
答案 0 :(得分:3)
您可以git log
向您显示实际更改特定文件的提交,并且您可以使用其"漂亮"输出格式以吐出命令以执行任何您喜欢的操作。所以添加了一些shell变量munging,
git ls-files render | while read f; do
git log --pretty="git show %H:$f >${f%.*}_%at.${f##*.}" -- $f
done | less # sh -x
以上编号的文件带有修改时间戳而不是序列号,如果这对您的客户来说太多了,那么您可以让shell为您序列化
git ls-files render | while read f; do
git log --reverse \
--pretty="git show %H:$f >${f%.*}_\$((1000+++x)).${f##*.}" -- $f
done | less # sh -x
答案 1 :(得分:2)
您基本上可以提取包含特定图像的所有提交ID,然后使用git show
一次提取一个。
在下面的示例脚本中,我假设您有一个线性提交历史记录,因此git log
将显示每次提交。请注意,您必须为您的目的进行修改,但这应该为您提供一般性的想法。
#!/bin/bash
i=1
for c in `git log | grep commit | awk '{print $2}' ` ;
do
name=`printf "%2d" $i | tr -d ' '`
i=$(($i+1))
echo $name
git show $c:Foo > "/tmp/Foo$name"
done;
此question告诉我们git show
对二进制文件是安全的。