Git - 如何从存储库(devops)中删除文件而不在本地克隆它

Posted

技术标签:

【中文标题】Git - 如何从存储库(devops)中删除文件而不在本地克隆它【英文标题】:Git - How to remove a file from repository (devops) without cloning it locally 【发布时间】:2022-01-07 21:42:31 【问题描述】:

我遇到了这个问题:

一名团队成员将损坏的文件推送到 azure devops 上的 repo(在本地),我们发现损坏的文件是因为在 devops 上导航提交,该文件无法打开或下载,如果我们尝试下载 repo由于 zip 操作失败。

我们已经从 devops 上的 repo 中删除了该文件,然后推送了另一个(好的)文件,在此操作之后,可以将 repo 下载为 zip,但是在包含损坏文件的推送之前拥有 repo 的每个人都无法获取,拉取或克隆存储库(可能是因为损坏的文件仍在历史记录中??)。

从我的本地仓库,也就是在推送之前,我尝试使用“git filter-branch”删除文件,但该操作似乎什么也没找到,可能是因为它在本地工作(?) 所以我在这种情况下,我不能拉,我不能克隆,但如果我不能得到最新版本,我也不能删除文件。 有人有任何暗示暗示这并不意味着在推送之前恢复吗? 谢谢

解释简单: 我需要从存储库中删除损坏的文件,但由于文件损坏,我无法克隆它,是否有任何方法在包含损坏文件的推送之前不暗示还原?

PS:克隆失败

remote: Azure Repos
remote: Found 35611 objects to send. (559 ms)
error: inflate: data stream error (incorrect header check)iB/s
fatal: pack has bad object at offset 326294050: inflate returned -3
fatal: fetch-pack: invalid index-pack output

【问题讨论】:

更清楚 - 每个人都会遇到同样的错误吗? everyone that have the repo before the push containing the corrupted file cannot fetch 这是对不同命令的引用。无论如何,搜索有关收到的错误的信息应该会有所帮助 - 例如这是否提供了前进的路径(注意这里的上下文git fsck 需要在服务器上运行)? ***.com/questions/23725925/… 对于推送前拥有本地仓库的每个人来说,克隆、获取或拉取错误都是一样的。显然,我已经在 SO 和其他人身上搜索了几个小时,但我没有发现任何有用的东西。问题是提交已经被团队成员推送(没有错误),目前他是唯一能够推送某事的人,其他人都被卡住了。我本地仓库上的 git fsck 没有报告任何内容 I've serached for hours on SO and others but I've not found anything usefull - 我花了 20 多岁才找到那个帖子(通过谷歌搜索'inflate: data stream error (incorrect header check)iB/s')你试过答案中的建议吗?您在该主题上还发现了哪些其他问题:)? git fsck on my local repo does not report anything 请重新阅读我上面的评论。 git fsck --full 检查对象目录:100% (256/256),完成。检查对象:100% (33604/33604),完成。顺便说一句,问题出在服务器端,而不是客户端。我无法处理推送损坏文件的本地存储库。 【参考方案1】:

希望能做到这一点:

git reset --hard <last good commit>

【讨论】:

如果无法克隆repo,则无法运行此命令。 嗯,好点。发布者应该能够从 repo 中删除此文件。 我已经编辑了帖子,希望现在更清楚

以上是关于Git - 如何从存储库(devops)中删除文件而不在本地克隆它的主要内容,如果未能解决你的问题,请参考以下文章

如何将 TFVC 项目从 Azure DevOps 服务器迁移到新的 Azure DevOps 帐户作为 Git 存储库

如何从 Git 存储库中删除文件?

如何从 Git 存储库中删除文件?

如何从 git bash 屏幕中删除文件并从存储库中删除该文件? [复制]

如何使用 Azure 自动化运行手册将 Azure devops 存储库下载为 zip 文件?

无法使用服务主体从发布管道访问 Azure Devops Git 存储库