gpt4 book ai didi

git - 如何恢复由于 .gitattributes 不正确而损坏的 PNG 文件?

转载 作者:行者123 更新时间:2023-12-05 08:40:26 25 4
gpt4 key购买 nike

我将几个 PNG 文件添加并提交并推送到我的 git 存储库中,但不幸的是,我有一个不正确的 .gitattributes 文件,如下所示:

* text
# no settings for PNG files

PNG 文件被 git 视为文本文件。现在我不能再打开它们了,我也丢失了它们的原件。有什么办法可以恢复它们吗?谢谢!


更新:添加 PNG 文件时,.gitattributes 已经在存储库中。这意味着我无法在提交历史记录中找到 PNG 文件的良好状态。所有提交都是在 Windows 上进行的。

最佳答案

假设您有 2 次提交:

  • 在第一个中,所有 PNG 文件都作为二进制文件处理,文件是正确的。
  • 第二次提交包括 .gitattributes 文件,所有 PNG 文件都被损坏,因为它们被视为文本文件。

这是 git log 输出:

commit d075d282795362e03318d93c36406822facc015c (HEAD -> master)
Author: John Doe <john.doe@users.noreply.github.com>
Date: Tue Mar 26 17:12:16 2019 +0100

Bad state
Gitattributed file added, PNG files are treated as text, they are now corrupted

commit fcaa5a87eb816ddafbd256e83ea4be004a87a6e8
Author: John Doe <john.doe@users.noreply.github.com>
Date: Tue Mar 26 17:11:36 2019 +0100

Good state
PNG Files are treated as binary, they are not corrupted yet

首先将所有 PNG 文件重置为初始状态:

git reset fcaa5a87eb816ddafbd256e83ea4be004a87a6e8 -- *.png

然后在不添加任何文件的情况下提交更改:

git commit -m '修复 PNG 文件'

放弃工作目录中的所有更改:

git checkout '*.png'

最后删除错误的 .gitattributes 条目或将其替换为:

*.png 二进制文件

您还可以使用 gitattributes template包括许多其他文件类型。


更新:

如果没有“良好”状态,即图像完好无损,您可以尝试通过处理文件来解决问题。您需要添加缺少的换行符。你不知道正确的位置,因为 git 已将它们全部删除。根据我的经验,如果您在第一行的末尾添加一个回车符,它可以修复大部分的小 PNG 文件。我不知道为什么,也不能保证,但你仍然可以尝试:

首先删除所有PNG文件:

rm -f *.png

然后在 .gitattributes 中将 PNG 文件声明为二进制文件:

*.png 二进制文件

恢复文件:

git checkout '*.png'

在第一行末尾添加一个回车符:

perl -i -p -e 's/$/$1\r/如果 $. == 1;' *.png

关于git - 如何恢复由于 .gitattributes 不正确而损坏的 PNG 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55330848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com