如何让GitHub等Git托管服务以ASCII格式展示二进制文件以便查看变更?
嘿,我来帮你搞定这个需求!既然你的二进制文件本质是纯ASCII编码的(从你给的十六进制示例来看,转成ASCII后是可读的文本内容),我们可以通过Git的配置让GitHub把它当成普通文本文件处理,这样就能轻松查看变更记录了。下面是具体步骤:
创建并配置
.gitattributes文件
这是核心操作,Git通过这个文件来指定特定文件的处理规则。在你的仓库根目录新建一个.gitattributes文件,添加一行规则(假设你的二进制文件名叫myfile.bin):myfile.bin text这条规则告诉Git:把
myfile.bin当作文本文件处理,用ASCII编码解析它。如果你的这类文件有统一扩展名(比如.dat),也可以针对扩展名设置:*.dat text验证文件的ASCII编码合法性
确保你的文件里所有字节都在ASCII范围(0x00-0x7F)内,没有超出的字符。可以用命令快速检查(Linux/macOS环境):xxd -c 16 myfile.bin | grep -v '[0-9a-f][0-9a-f] [ -~]'如果没有任何输出,说明文件里的所有字节都是可打印ASCII或合法的控制字符(比如你示例里的
0D 0A是回车换行,完全没问题)。提交后查看变更效果
把.gitattributes和你的二进制文件一起提交到GitHub后,当你修改文件内容再提交,GitHub的Diff页面就会像显示普通代码文件一样,高亮展示文本内容的变更,而不是只显示“二进制文件已修改”的提示。
举个例子,你示例里的十六进制内容转成ASCII是这样的:
scoop hurrr initializer derp
function derp takes nothing returns nothing
call Serp...
修改其中的hurrr为hello后,GitHub的Diff会直接显示这行的文本变更,非常直观。
内容的提问来源于stack exchange,提问作者Mossmyr

