如何使用 Git 修复此错误

Igo*_*gor 4 git git-remote

全部,

Igors-MacBook-Air:dbhandler igorkorot$ cat .gitignore | grep ipch
dbhandler/ipch/

Igors-MacBook-Air:dbhandler igorkorot$ git rm -r dbhandler/ipch
rm 'dbhandler/ipch/dbinterface-19274bfe/dbinterface-5ede7563.ipch'
rm 'dbhandler/ipch/dbloader-ce428aa/dbloader-61894527.ipch'
rm 'dbhandler/ipch/dll_vc9_my_dll-b99cc480/dialogs-c6b7929.ipch'
rm 'dbhandler/ipch/docview_vc9-e1a2d063/docview-4c99da7.ipch'
rm 'dbhandler/ipch/sqlite-386a740f/sqlite-1af4ae5c.ipch'
Igors-MacBook-Air:dbhandler igorkorot$ git commit -m "Remove MSVC build files"
[master 69327de] Remove MSVC build files
 5 files changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 dbhandler/ipch/dbinterface-19274bfe/dbinterface-5ede7563.ipch
 delete mode 100644 dbhandler/ipch/dbloader-ce428aa/dbloader-61894527.ipch
 delete mode 100644 dbhandler/ipch/dll_vc9_my_dll-b99cc480/dialogs-c6b7929.ipch
 delete mode 100644 dbhandler/ipch/docview_vc9-e1a2d063/docview-4c99da7.ipch
 delete mode 100644 dbhandler/ipch/sqlite-386a740f/sqlite-1af4ae5c.ipch

Igors-MacBook-Air:dbhandler igorkorot$ git push
warning: push.default is unset; its implicit value is changing in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the current behavior after the default changes, use:

  git config --global push.default matching

To squelch this message and adopt the new behavior now, use:

  git config --global push.default simple

See 'git help config' and search for 'push.default' for further information.
(the 'simple' mode was introduced in Git 1.7.11. Use the similar mode
'current' instead of 'simple' if you sometimes use older versions of Git)

Counting objects: 401, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (323/323), done.
Writing objects: 100% (386/386), 98.53 MiB | 726.00 KiB/s, done.
Total 386 (delta 148), reused 45 (delta 13)
remote: warning: File dbhandler/docview_vc9.sdf is 58.89 MB; this is larger than GitHub's recommended maximum file size of 50.00 MB
remote: warning: File dbhandler/ipch/sqlite-386a740f/sqlite-1af4ae5c.ipch is 55.25 MB; this is larger than GitHub's recommended maximum file size of 50.00 MB
remote: warning: File dbhandler/ipch/dbinterface-19274bfe/dbinterface-5ede7563.ipch is 53.94 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: c4b823789a274ab658515b65b7b259a6
remote: error: See http://git.io/iEPt8g for more information.
remote: error: File dbhandler/ipch/dll_vc9_my_dll-b99cc480/dialogs-c6b7929.ipch is 153.44 MB; this exceeds GitHub's file size limit of 100.00 MB
To https://github.com/oneeyeman1/dbhandler.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://github.com/oneeyeman1/dbhandler.git'
Run Code Online (Sandbox Code Playgroud)

问题是 dbhandler/ipch 是 .gitignore 的一部分,但“git push”仍在尝试将它们推送到远程。

或者我误解了某些事情而我需要做其他事情?

谢谢。

[编辑]

该命令失败:

Igors-MacBook-Air:dbhandler igorkorot$ git filter-branch --index-filter 'git rm --cached dbhandler/ipch'
Rewrite f594d547c7f8354048d5df8b8b3e9a038b2be38a (1/97)fatal: pathspec 'dbhandler/ipch' did not match any files
index filter failed: git rm --cached dbhandler/ipch
Run Code Online (Sandbox Code Playgroud)

[/编辑]

Hri*_*nev 8

您在之前的提交中已经拥有大文件。由于 git 的工作方式,所有文件的所有版本都必须存储在存储库中。您最好的选择是使用以下命令从历史记录中删除文件git fiter-branch

$ git filter-branch --index-filter 'git rm --cached --ignore-unmatch dbhandler/ipch'
Run Code Online (Sandbox Code Playgroud)

这将获取当前分支上的所有提交并编辑它们,运行

$ git rm --cached dbhandler/ipch
$ git commit --amend
Run Code Online (Sandbox Code Playgroud)

在各个。然后运行

$ git push -f
Run Code Online (Sandbox Code Playgroud)

因为历史已经被改写。请注意,这会干扰处理这些提交的其他人,因为新提交虽然具有相同的描述,但与旧提交无关(类似于git rebase)。

或者,只能从某些提交中删除选定的文件:

$ git filter-branch ... 0123abcd..HEAD
Run Code Online (Sandbox Code Playgroud)

仅在从 0123abcd 到 HEAD 的提交上运行。如果0123abcd还没有被推送,一个简单的操作git push就会成功。