[英]git checkout binary file using object SHA (not commit SHA)
我将从 git repo 中删除视频文件(使用 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
但是如果我用二进制文件尝试这个,输出是无效的。 如果我的二进制文件是 9 MB,那么输出文件大约是 18 MB 的两倍! 我也尝试过使用:
git cat-file blog 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 本身实际使用什么命令?
这是破坏您的数据的PowerShell。 我建议不要住在服务员打开并重新打包所有行李的酒店,这会损坏不符合他们期望的所有东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.