git - 恢复使用 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当然会损坏......
解决方案
如果存储在 Git 存储库中的数据不是您要存储的数据,那么任何 Git 命令都无法找到您确实要存储的数据。
换句话说:不,没有办法从错误的数据中得到正确的数据。如果您在某处拥有正确的数据,那么您就可以从那里获得正确的数据。
所有git filter-branch
(或新的和改进的git filter-repo
)可以做的就是复制每个原始提交,并在执行时应用一些过滤器。现有的原始提交及其原始快照会在存储库中保留一段时间;带有新快照的新提交是您在使用更新的分支名称查找提交时会找到的提交。
推荐阅读
- msbuild - 发布核心构建环境控制
- postgresql - 如何将 SQL IN 与包含逗号分隔列表的字符串一起使用?
- python - Django:登录时调用一次函数
- android - 我的位置按钮未显示在地图片段中
- javascript - 删除嵌套数组中具有键值的对象
- node.js - 使用 Crypto 时 NodeJS 解密失败。问题是什么?
- react-native - react native expo:谷歌身份验证不返回用户数据
- ios - 为什么从 photoLibrary swift 4 加载视频扩展 (.3gp) 冻结
- wordpress - Woocommerce产品价格复制
- azure-cli - Azure Batch:使用 Azure CLI 在池创建期间提升用户权限