11

我最近在我们的主仓库中设置了 Git LFS,到目前为止没有任何问题。最重要的是,我们只设置它来阻止对我们单独的构建 repo 的膨胀效应(它正在消失,有利于一个新的过程)。

此时的主要问题(以及其他问题)是我们正试图开始将构建从主存储库推送到 Acquia 存储库(这是 Acquia 部署所必需的)。Acquia 不支持 Git LFS,我没有时间与他们争论,也没有时间与任何可能影响此类更改的人争论主机解决方案的优点(这是我们已经拥有并且已经拥有一段时间)。

我只想删除它,似乎我只删除了部分。似乎这方面的在线文档充其量是很少的。

这是我所做的:

  1. git lfs untrack *
  2. 然后git lfs uninstall
  3. 最后,我.gitattributes将文件恢复到以前的状态

我把它推到了本地,它似乎已经消除了很多对象跟踪(由于我进入.git/lfs文件夹结构并根植于文件夹结构)。跑步git lfs ls-files根本没有向我展示任何东西。

但是,当我将它拉到一个单独的克隆上时,当我尝试推送到 Acquia 时,它显示仍有超过一千个文件被它跟踪,但由于 Acquia 不支持它而失败。迷人,我知道。

我怀疑完全删除它会删除.git/lfs目录或至少删除它的内容。如果不出意外,它应该消除克隆中的跟踪,然后下拉更改。它不是。

我认为我可能错过了将文件指针改回原来的状态的步骤,但我不确定我还能安全地做什么。我想保留它跟踪的文件。我的仓库托管在 Bitbucket 云上。

4

1 回答 1

1

来自 GitHub,并且也沿着您所采取的步骤,

https://github.com/git-lfs/git-lfs/issues/3026

git lfs uninstall

这消除了钩子和涂抹/清洁过滤器配置,这仅仅是开始,mua-ha-ha

我们如何重新索引/重新提交 lfs'd 文件来恢复它们???

您可能可以从 .gitattributes 中删除条目并触发每个 lfs 文件不同的 git 索引,然后添加并提交这些文件。这与在 git repo 中更改自动换行符的过程相同。我将不得不对此进行一些测试,但这可能会让您朝着正确的方向前进。唯一的问题是您不想先重置 .gitattributes 文件。我刚才读到的一件好事,这必须在 .gitattributes 步骤之前完成

但是我们到底是怎么做到的呢?(当然不想意外更改我所有的换行符,哈哈)

好的,这个问题有一些关于方法论的讨论

git lfs ls-files — view lfs files

对于每个文件,如果可以,请使用 glob:

git rm --cached myfile.psd — "remove" the lfs file
git add myfile.psd — add the "normal" file
git commit -m "restore files from lfs"

让我知道这是否有意义

remove lfs .gitattribute entries

这显然会阻止 lf​​s 自我复活

我们如何删除通过 git lfs ls-files 看到的剩余文件???我猜我们git lfs untrack是一次一个

不, untrack 不会删除它们...嗯...它有什么作用?

也许一旦我弄清楚第2步,这就会完成

是的,第 2 步把这个淘汰了

我们告诉其他贡献者做什么???我猜他们只是需要git lfs uninstall?他们是否还需要git lfs untrack存储文件或类似的东西?

另外,我对在这里重写 git 历史没有兴趣,这很愚蠢......我只想在处理完这件事后与我的合作者一起前进

于 2020-10-16T10:15:56.470 回答