Git尝试推送未跟踪的文件

时间:2016-02-05 22:10:08

标签: git

我试图将我的项目推送到github,并收到以下错误:

Counting objects: 87, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (78/78), done.
Writing objects: 100% (87/87), 50.25 MiB | 1.14 MiB/s, done.
Total 87 (delta 32), reused 0 (delta 0)
remote: warning: File example-attractor/bin/example-attractor_debug.ilk is 51.19 MB; this is larger than GitHub's recommended maximum file size of 50.00 MB
remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
remote: error: Trace: f711bd940689c3c64a38c283877b86f8
remote: error: See http://git.io/iEPt8g for more information.
remote: error: File example-attractor/example-attractor.sdf is 103.62 MB; this exceeds GitHub's file size limit of 100.00 MB
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs

好的,没什么大不了的。我已将*.sdf*.ilk添加到我的.gitignore,删除并添加了我的所有文件,并通过git ls-files检查了我的跟踪文件:

.gitignore
example-attractor/README.md
example-attractor/addons.make
example-attractor/example-attractor.sln
example-attractor/example-attractor.vcxproj
example-attractor/example-attractor.vcxproj.filters
example-attractor/icon.rc
example-attractor/src/main.cpp
example-attractor/src/ofApp.cpp
example-attractor/src/ofApp.h

大!这些文件已从跟踪中删除。我试着再次推送到github ......得到了同样的错误。我跑git status并且没有变化:

On branch master
Your branch is ahead of 'origin/master' by 3 commits.
  (use "git push" to publish your local commits)
nothing to commit, working directory clean

我对现在该做什么感到困惑!为什么git仍然试图推送无法跟踪的文件?

2 个答案:

答案 0 :(得分:3)

最可能的解释是您在之前的3次提交中之一提交了该文件。您需要做的是将它们从中删除。通过执行git rebase -i origin/master来完成此操作。这将带来一个包含所有这些提交的编辑器。对于所有三次提交,将“pick”替换为“e”,保存并关闭编辑器。 Git现在会在每次提交后暂停,此时您可以从索引中删除该文件,执行git commit --amend,然后git rebase --continue。那你应该没问题。

答案 1 :(得分:1)

  

大!这些文件已从跟踪中删除。

从未来跟踪,是的。但是您仍然在分支master的本地历史记录中提交了提交。

  

为什么git仍然试图推送未被跟踪的文件?

当你推动一个分支时,它所有尚未放在遥控器上的祖先提交也被推到那里。

  

我很困惑现在要做什么!

从分支的历史记录中删除不需要的文件,在git rebase -i origin/master分支上like David suggests masterwith git filter-branch。在任何一种情况下,请在更改任何历史记录之前备份您的存储库。