如何禁用git-lfs?

时间:2018-02-09 05:31:42

标签: git git-lfs

我在bitbucket上有一个使用LFS的存储库。自从使用它一段时间以来,我决定将存储库移回我控制的空间。我首先使用LFS的唯一原因是有效地将我的存储库大小限制加倍(因为LFS中的文件放在一个单独的存储桶中)但是现在我移动它,我不再需要这样做。

我需要一种方法来浏览整个git历史记录,删除git lfs所做的所有工作痕迹(因此所有文件都已提交,通常是#39;)。完成后,我打算强制推送到新的存储库。

我已经完成了相当多的搜索,遇到了suggested solutions,但我不了解如何实施/运行它们,因为它们是高级别的。

我如何挥手告别git lfs?

3 个答案:

答案 0 :(得分:6)

仅更新当前提交

如果你想离开LFS,但不是那么担心修复整个git历史记录,你可以做以下事情;

git lfs uninstall
touch **/*
git commit -a

这将卸载LFS支持,触摸每个文件(以便git识别出已更改)然后全部提交。如果你愿意,你可以更具体(例如,**/*.png)。请注意,使用**需要启用扩展的glob支持(bash上为shopt -s globstar

更新整个历史记录

这对我有用 - 但它会引发很多错误(我认为我在每次提交文件时都没有将错误添加到LFS中)和需要很长时间(每次提交大约2-3秒)。

git lfs uninstall
git filter-branch -f --prune-empty --tree-filter '
  git lfs checkout
  git lfs ls-files | cut -d " " -f 3 | xargs touch
  git rm -f .gitattributes
  git lfs ls-files | cut -d " " -f 3 | git add
' --tag-name-filter cat -- --all

它卸载git LFS支持(理论上防止LFS搞乱索引)然后对于每次提交它确保LFS文件正确检出,然后触摸它们(所以git意识到它们已经改变),删除设置LFS在.gitattributes中找到,因此在克隆时它不会继续尝试使用LFS,然后将真实文件添加到索引中。

完成上述操作后,您需要进行强制推动。当然,这会将处理你的repo的任何人扔进一个独立的头状态 - 所以在代码冻结期间这样做是明智的。之后,让每个人都做一个新的克隆可能是最容易的。

答案 1 :(得分:2)

git lfs migrate export

来自git lfs migrate help

  

导出

     

export 模式将Git历史记录中存在的Git LFS指针文件迁移出   Git LFS,将它们转换为相应的目标文件。

示例工作流程

  1. 通过git lfs ls-files验证您是否确实拥有LFS文件。
  2. 从存储库中的所有filter=lfs文件中删除所有.gitattributes行。 .gitattributes可以生活在任何地方,因此请确保全部找到它们,否则以后可能会导致迁移问题。
  3. 提交对.gitattributes所做的任何更改。
  4. 确保您对git status没有任何更改。
  5. 运行迁移:git lfs migrate export --everything --include .
  6. 运行git status以确保您没有更改。如果您将.gitattributes留给filter=lfs,则可能现在不正确地进行了更改。
  7. 验证所有先前列出的LFS文件不再与git lfs ls-files一起出现。
  8. 检查文件(例如,打开以前的LFS文件以确保它们没有损坏)并运行构建以确保一切正常。

提示

  • 在区分大小写的文件系统上运行,以防万一文件系统发生冲突(例如./LICENSE和./License)。
  • 从所有filter=lfs中删除所有.gitattributes行。
  • 您可能还希望删除.git/hooks目录中保留的LFS:预提交,后提交,签出后,合并。
  • 对于$GIT_TRACE=1,应该没有...trace git-lfs: filepathfilter: accepting...的迹象

答案 2 :(得分:-1)

对于特定文件

  1. app.get('/', (req, res) => { console.log("Someone hit localhost:5000/"); res.send('We have nothing to show yet, try to visit localhost:5000/auth/google'); }); 删除文件/图案
  2. 转到文件目录并运行.gitattributes
  3. 提交并推送更改