我和git和guthub相对不高兴。我遇到了一个阻止我将文件上传到github的问题。
完成后
git add .
git commit -m "update"
git push origin master
控制台然后说
Counting objects: 5439, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3670/3670), done.
^Citing objects: 5% (320/5439), 31.90 MiB | 3.54 MiB/s
Total 5439 (delta 1392), reused 5438 (delta 1391)
remote: Resolving deltas: 100% (1392/1392), completed with 1 local object.
remote: error: GH001: Large files detected. You may want to try Git Large
File Storage - https://git-lfs.github.com.
remote: error: Trace: 5dd2ad6c7e223707ec5baf451b28c2f0
remote: error: See http://git.io/iEPt8g for more information.
remote: error: File ImmerGo_24x2/ImmerGo node server +
client/nwjs.app/Contents/Versions/56.0.2924.87/nwjs Framework.framework/nwjs
Framework is 101.72 MB; this exceeds GitHub's file size limit of 100.00 MB
5439是太多的文件,似乎它试图上传我的nw.app,即使我没有留下这个。我还在我的.gitignore中加入了它的路径。
运行这些
之后git ls-files
git ls-files --others
它似乎正在跟踪我的仓库的正确文件,因此我不确定如何阻止客户端/ nwjs.app被上传。
非常感谢任何帮助
答案 0 :(得分:0)
此:
Counting objects: 5439, done.
是对象的计数,而不是文件。 Git有四种对象:提交,树,blob(松散的“文件”)和(带注释的)标记。所以这意味着你告诉你的Git发送给他们(GitHub的)Git的对象集中有5439个commits-plus-trees-plus-blobs-plus-tags。
git ls-files
ls-files
命令显示存储在索引中的文件(blob对象)。索引不是提交(但与提交有关:它是您的Git构建下一次提交的地方)。
当你运行git push
时,你会指示你的Git调用另一个Git。他们根据你提供的 refspec 参数,协商你的Git应该发送给他们的Git的“顶级对象”(提交和/或标记):
git push remote refspec1 refspec2 ... refspecN
在你的情况下,远程是origin
(即GitHub的Git),单个refspec是master
。因此,您的Git会查看您的master
标识的提交以及 master
标识的提交。你的Git会找到你拥有的所有提交,而不是它们。
这几乎肯定是两个提交,可能还有更多。
然后你的Git打包所有这些提交,以及那些提交使用的所有其他对象 - 树和blob,他们的Git还没有。这就是5439
对象计数的来源。在您发送的集合中有足够的提交,树和blob,以添加到那么多对象。
一旦他们的Git收到了所有这些对象,他们的Git解压缩它们(通过预接收或更新钩子,毫无疑问)检查它们。其中一个提交有一个大文件。然后他们的Git会在打印出您看到的错误消息后拒绝更新master
的请求(在打印之前,您的Git会在每行前加上单词remote:
)。
您需要推送不同(可能更少和/或更好)的提交。
要做到这一点,你需要 - 好吧,“想要” - 让你的master
指向新的,不同的提交。然后你可以放弃旧的(和丑陋的?)提交,或者将它们放在你从未推送到GitHub的分支上。是保留还是放弃它取决于你。
有很多方法可以实现这一目标,而我现在没有多少时间再次写这些内容了。查找 rebasing 和“BFG”。根据您是否要使用BFG(据报道它更简单),您也可以使用git filter-branch
,但这很复杂。如果你有一个简单的案例 - 你不可能知道你在这里发布了什么 - 一个简单的git rebase -i origin/master
并将大文件的意外提交删除提交到squash
es就足够了。