我有一个git repo(本地),我需要取消git它,以便每个提交存储在一个文件夹中,并且没有git的迹象。因此它应该导致我的分支文件夹和这些文件夹文件夹内的每个提交。
这可能吗?
答案 0 :(得分:4)
嗯,这样的事情:
n=0
git rev-list --reverse HEAD | while read rev; do
n=$(expr $n + 1)
dir="$n-$rev"
mkdir "$dir"
git archive --format=tar "$rev" | ( cd $dir && tar xvf - )
done
这会将修订版本放入编号为“1-hash”,“2-hash”等的文件夹中。(根据需要更改公式以计算 dir )。
此外,这仅适用于“HEAD”...如果您需要所有分支,很难想出编号方案,而且很难知道如何调用目录。虽然您只需使用git rev-list --branches
,然后将dir计算为$(git name-rev "$rev")
理想情况下,您可以使用硬链接提取文件来表示相同的内容,但这将是更多的工作!