Home > OS >  Git failed to push some refs due to large file though the large file isn't tracked and not on t
Git failed to push some refs due to large file though the large file isn't tracked and not on t

Time:09-03

I want to sync my local changes to the GitHub master repo online. I originally had a file over 100 MB but since added it to the .gitignore file. I moved the large file to another, untracked non-Git folder.

$ git status
On branch master
Your branch is ahead of 'master/master' by 42 commits.
  (use "git push" to publish your local commits)

nothing to commit, working tree clean

When I run git push,

$ git push
Enumerating objects: 216, done.
Counting objects: 100% (215/215), done.
Delta compression using up to 8 threads
Compressing objects: 100% (185/185), done.
Writing objects: 100% (201/201), 85.26 MiB | 4.67 MiB/s, done.
Total 201 (delta 73), reused 4 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (73/73), completed with 7 local objects.
remote: warning: File data/SU_COMP_LT.csv is 78.18 MB; this is larger than GitHub's recommended maximum file size of 50.00 MB
remote: error: Trace: 59a9f7d74f43667d95618d6bc07346491424a287ecab333c99fa78e5714e39da
remote: error: See http://git.io/iEPt8g for more information.
remote: error: File data/SU_COMP_LT.csv is 117.74 MB; this exceeds GitHub's file size limit of 100.00 MB
remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
To https://github.com/path.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://github.com/path.git'

I tried git reset file_name and git ls-tree -r master --name-only and the big file isn't tracked. How do I sync the local repo to the GitHub repo?

CodePudding user response:

Your problem is that .gitignore have no effect on items that have previously been tracked.

To fix this run (in VS Code you should be able to do this from the console itself or you can use something like Git Bash):

git reset file_name

In your case file_name would be the file that is over 100MB.

This will unstage the file and keep it but should now ignore it if it is added to the .gitignore. Hope that helps

CodePudding user response:

I had to use BFG Repo-Cleaner and their website. Using GitBash,

$ cd your_local_git_directory
$ git clone --mirror https://github.com/your_online_git_directory
$ java -jar C:/path_to_the_bfg_jar_file/bfg-1.13.2.jar --delete-files big_file_name.csv
$ git reflog expire --expire=now --all && git gc --prune=now --aggressive
$ git push

Then finally, I confirmed everything,

$ git status
On branch master
Your branch is up to date with 'master/master'.

nothing to commit, working tree clean
  • Related