我在git中有1000多个XML版本,我编写了一个脚本来解析和处理XML数据。 在这一年中,XML的内容被更改并提交给git。 我想检查从当前提交到第一次提交的旧XML的内容。 是否有可能将所有文件都添加到git中,包括已删除的文件在不同名称的同一文件夹中?
答案 0 :(得分:1)
你总是可以写一个小的bash脚本来为你做这件事。
dir=files;
filename=$1;
mkdir $dir;
for hash in $(git log --pretty=%H $filename); do
git checkout $hash $filename;
cp $1 $dir/$hash\_$filename;
done
这会将文件的所有版本放在名为files的文件夹中。你可以使它更精细。在命令行上提供文件夹名称,检查文件夹是否存在等。主要想法就在那里。
答案 1 :(得分:0)
如果要查看两次提交之间所有文件的所有更改,请使用git diff
。
git diff longhashfirstcommit..longhashfromlatestcommit
您可以通过运行git log
来获取提交哈希值。
更多信息。
http://linux.die.net/man/1/git-diff
http://git-scm.com/book/en/Git-Basics-Recording-Changes-to-the-Repository#Viewing-Your-Staged-and-Unstaged-Changes
答案 2 :(得分:0)
假设你很乐意做一些shell脚本,你应该能够将git管道结合起来以获得你想要的东西。
git rev-list --all
将列出存储库中所有修订版的哈希值
git ls-tree -r <hash>
将为您提供提交(或其他树形图)中所有文件的列表。您可以通过筛选此列表来拆分XML文件,并提取它们的哈希值
git show <hash>
将根据其哈希值为您提供文件的内容。您可以将该内容重定向到任何您喜欢的位置。
为了帮助您入门,以下管道将为您提供所有XML文件的列表及其哈希和文件名:
for i in `git rev-list --all` ; do git ls-tree -r $i ; done | grep ".xml$"