GIT计数太多文件,并试图推动未跟踪的文件



我的noob与git and 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 Aswell。我还将其路径包括在我的.gitignore中。

运行这些

git ls-files
git ls-files --others

看来它正在跟踪我的存储库的正确文件,因此我不确定如何阻止客户端/nwjs.app上传。

任何帮助将不胜感激

描述问题

这个:

Counting objects: 5439, done.

对象的计数,而不是文件。git有四种对象:提交,树,斑点(松散的"文件"(和(注释(标签。因此,这意味着在您告诉您的git将git发送到其(github的(git中,有5439个commits-plus-plus-plus-plus-blobs-plus-plus-tag。

git ls-files

ls-files命令显示存储在 index 的文件(blob对象(。该索引不是提交(而是与有关的 comport:这是您的git构建您的 next commit(。

运行git push时,您指示您的git调用另一个git。他们根据您提供的 refspec 参数,协商了哪些"顶级对象"(通常是提交和/或标签(,您的git应该发送给他们的git:

git push remote refspec1 refspec2 ... refspecN

在您的情况下,远程origin(即github的git(,而单个refspec为 master。因此,您的git查看提交 master标识的哪个以及他们的 master识别。您的git找到了您所拥有的所有承诺,它们没有。

这几乎可以肯定至少是两个提交,可能是更多。

您的git然后包装所有这些提交,以及所有其他对象(树和斑点(,即它们的git没有。这就是5439对象计数的来源。您要发送的集合中有足够的投入,树和斑点,以加起来很多。

一旦他们的git收到了所有这些对象,它们的git就可以拆开它们,并且(毫无疑问,通过预先接收或更新的钩子(检查了它们。其中一个提交中有一个大文件。然后,他们的git拒绝更新其master的请求,在打印了您看到的错误消息之后(在打印之前,您的git前缀 remote:在每行中前缀(。

解决问题

您需要推动不同的(也许更少和/或更好(提交。

要这样做,您需要 - 好,"想要" - 使您的master指向新的,不同的提交。然后,您可以放弃您的旧(丑陋?(提交,也可以将它们放在您永远不会推到Github的树枝上。是保留还是放弃它们取决于您。

有很多方法可以实现这一目标,而我现在几乎没有时间再写它们。查找重新审视和" bfg"。根据您是否要使用BFG(据报道要简单得多(,也可以使用git filter-branch,但这很复杂。如果您有一个简单的案例 - 从这里发布的内容不可能说明 - 简单的git rebase -i origin/master并将以前意外提交的大文件的删除转换为squash ES可能就足够了。

最新更新