0

我通过从包含它们的任何文件中删除所有回车符,将项目中的所有行尾从 dos 模式更改为 unix 模式:

grep -lIUr '^M' . | xargs sed -i 's/^M//'

我以为它会忽略隐藏的点文件.git/,但它没有,现在我的 git 存储库已被破坏。

git fsck

Checking object directories: 100% (256/256), done.
error: inflate: data stream error (incorrect data check)
fatal: loose object 62f7323e2a025640a25214f13a670097876c1683 (stored in .git/objects/62/f7323e2a025640a25214f13a670097876c1683) is corrupt

在任何地方都没有检出存储库的任何其他副本。有什么办法可以从中恢复吗?我的回购死了吗?

4

2 回答 2

1

是的。不走运,因为所有 ^M 都消失了:也许您可以部分恢复历史并构建另一个 repo,但仅此而已。

对于未来,使用更谨慎和适当的工具,例如dos2unix转换行尾。

于 2013-05-30T23:22:55.267 回答
1

将来(现在对您没有帮助),您可以将命令限制为存储库中的文件。

grep -lIUr '^M' `git ls-files` | xargs sed -i 's/^M//'
于 2013-05-31T02:31:19.010 回答