首页 > 解决方案 > 恢复使用 git 错误行尾转换的 blob

问题描述

我在 git 中有一段历史,在提交中A我们有一个.gitattributes文件

* text eol=lf

显然是错误的,因为它会在签入之前将所有路径转换为 ​​LF 甚至是二进制文件。所以这发生了,我想知道F历史中的二进制文件/blob是否已损坏(因为crlf已转换为lf)可以恢复以便撤消转换。

如果该程序适用,我会以git filter-branch某种方式应用它...

PS:我创造了一个新的历史,.gitattribute到处都有一个更正的文件master

* text=auto eol=lf

建立了一个新的孤儿分支new-master并将整个分支重新建立master在它之上。但这并不能解决问题,文件/blob当然会损坏......

标签: gitcore.autocrlf

解决方案


如果存储在 Git 存储库中的数据不是您要存储的数据,那么任何 Git 命令都无法找到确实要存储的数据。

换句话说:不,没有办法从错误的数据中得到正确的数据。如果您在某处拥有正确的数据,那么您就可以从那里获得正确的数据。

所有git filter-branch(或新的和改进的git filter-repo)可以做的就是复制每个原始提交,并在执行时应用一些过滤器。现有的原始提交及其原始快照会在存储库中保留一段时间;带有新快照的新提交是您在使用更新的分支名称查找提交时会找到的提交。


推荐阅读