gpt4 book ai didi

git - 由于二进制文件,无法推送到 Git

转载 作者:太空狗 更新时间:2023-10-29 13:40:49 25 4
gpt4 key购买 nike

因此,由于一些二进制视频文件,我在推送到我一直在工作的主分支时遇到了问题。当我第一次尝试推送文件时,文件太大了。所以我把它们从我正在处理的项目的目录中删除了。但是现在,当我从第一次初始推送开始尝试推送时,它向我返回了这条错误消息。

Compressing objects: 100% (38/38), done.
Writing objects: 100% (39/39), 326.34 MiB | 639.00 KiB/s, done.
Total 39 (delta 16), reused 0 (delta 0)
remote: error: GH001: Large files detected.
remote: error: Trace: b7371dc6457272213ca1f568d9484c49
remote: error: See http://git.io/iEPt8g for more information.
remote: error: File themes/SomeFile/uploads/me_582610_mountain-river.mov is 315.08 MB; this exceeds GitHub's file size limit of 100 MB
To git@github.com:UserName/Project.git

它说的文件太大,似乎仍然存在,但实际上根本不在我的目录中,甚至在我的计算机上。我把它彻底删除了。这里有什么问题?这是我第一次遇到这个问题。我去了引用的 Git 站点寻求支持,https://help.github.com/articles/working-with-large-files/ ,然后运行 ​​git rm --cached me_582610_mountain-river.mov 并返回消息 fatal: pathspec 'me_582610_mountain-river.mov' did not match any files

如有任何帮助,我们将不胜感激!

最佳答案

请记住,默认情况下,您提交给 git 的所有内容都会保留在您的存储库中 - 即使您在以后的提交中“删除”了它

GIT 的弱点之一(连同其他 DVCS)是它不能很好地处理大型二进制文件。许多想要对大量大型二进制文件进行版本控制的团队/人员更喜欢集中式 VCS,例如 Perforce , Subversion等等。人们可以更好地控制下载的 repo 的哪一部分以及在 repo 中保留多少个先前提交的版本。

针对您的问题:您有一个存储库,您之前已向其中提交了一个大型二进制文件。即使您随后将其从您的存储库中“删除”,该文件仍然存在。要从您的存储库中完全删除它,您必须进行一些手术,物理销毁添加该文件的原始提交,然后重写存储库中的每个后续提交!

根据 GIT Documentation on removing objects (强调我的):

There are a lot of great things about Git, but one feature that can cause issues is the fact that a git clone downloads the entire history of the project, including every version of every file. This is fine if the whole thing is source code, because Git is highly optimized to compress that data efficiently. However, if someone at any point in the history of your project added a single huge file, every clone for all time will be forced to download that large file, even if it was removed from the project in the very next commit.

您的问题的解决方案不是一个简单的过程,而是破坏性的(因为它基本上在您包含有问题的文件的提交之后重写每个提交)并且在上面的链接中有很好的记录,我鼓励在更新你的官方树之前,你要多读几遍并在你的树的本地副本上练习。

小心行事!

If you do this immediately after an import, before anyone has started to base work on the commit, you’re fine — otherwise, you have to notify all contributors that they must rebase their work onto your new commits.

坦率地说,大约一年前,当我使用自己的存储库(即不与其他任何人共享)执行此操作时,我选择将当前代码库复制到一个新文件夹并从中创建一个新的 GIT 存储库而不是尝试重写我所有的历史记录、包文件等。丢失历史记录对我来说当时不是主要问题。

祝你好运!

关于git - 由于二进制文件,无法推送到 Git,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26516388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com