【问题标题】:Recover blobs which are falsely line-ending converted with git恢复使用 git 错误行尾转换的 blob
【发布时间】:2020-05-28 09:34:57
【问题描述】:

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

* text eol=lf

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

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

PS:我在master 上随处可见更正的.gitattribute 文件,创造了新的历史

* text=auto eol=lf

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

【问题讨论】:

    标签: git core.autocrlf


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-03-22
      • 2017-08-03
      • 2015-02-06
      • 1970-01-01
      • 2013-05-22
      • 1970-01-01
      • 2011-10-27
      • 2015-03-11
      相关资源
      最近更新 更多