我将从git仓库中删除视频文件(使用BFG)。在删除它们之前,我想提取它们并备份它们。我有一个这些对象及其对象SHA的列表。
ce6c93a3389b 4.4MiB Fixasr/part01/ToFix.mp4
3cf7cff4e087 5.7MiB Fixasr/part03/ToFix.flac
028fd658bcc5 6.0MiB Selectmen (3 minutes).webm
ea3fa8f8dc9a 6.0MiB Fixasr/part01/ToFix.flac
... etc ...
我可以使用"git cat-file"轻松地提取一个文本文件,并返回相同的文本文件:
git cat-file -p e13b31 >textfile.txt
但是如果我用二进制文件尝试这样做,输出是无效的。如果我的二进制文件是9MB,那么输出文件大约是它的两倍,18MB!我也尝试使用:
git cat-file blob 53f6e >video.mp4
但我得到了同样的结果。
我尝试了一个小的二进制文件,看看发生了什么。我的文件包含:
00 00 01 00 02 00 03 00 04 ...
当我使用"git cat-file"解压缩这个文件时,它包含以下内容:
FF FE 00 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 ...
它似乎试图通过将每个“2字节字符”转换为4字节来将二进制文件转换为Unicode文本!
最有可能的是,git在检出二进制文件时,本身并不使用"cat-file"这个管道命令。有谁知道git本身实际上使用的是什么命令吗?
1条答案
按热度按时间r6hnlfcb1#
这是powershell破坏你的数据。我建议不要住那些服务员开门的酒店,他们会重新打包你所有的行李,破坏所有不符合他们期望的东西。