当我尝试推送到git并且我不知道如何修复它时,我收到此错误。
Counting objects: 1239, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (1062/1062), done.
Writing objects: 100% (1239/1239), 26.49 MiB | 679.00 KiB/s, done.
Total 1239 (delta 128), reused 0 (delta 0)
remote: warning: File log/development.log is 98.59 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: efd2d13efa4a231e3216dad097ec25d6
remote: error: See http://git.io/iEPt8g for more information.
remote: error: File log/development.log is 108.86 MB; this exceeds GitHub's file size limit of 100.00 MB
remote: error: File log/development.log is 108.74 MB; this exceeds GitHub's file size limit of 100.00 MB
remote: error: File log/development.log is 108.56 MB; this exceeds GitHub's file size limit of 100.00 MB
remote: error: File log/development.log is 106.58 MB; this exceeds GitHub's file size limit of 100.00 MB
remote: error: File log/development.log is 103.70 MB; this exceeds GitHub's file size limit of 100.00 MB
To git@github.com:myUsername/myRepo.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@github.com:myUsername/myRepo.git'
我猜我需要从提交中删除大文件,但我该怎么做?
答案 0 :(得分:7)
要删除大文件,GitHub suggests:
$ git rm --cached giant_file
# Stage our giant file for removal, but leave it on disk
git commit --amend -CHEAD
# Amend the previous commit with your change
# Simply making a new commit won't work, as you need
# to remove the file from the unpushed history as well
git push
# Push our rewritten, smaller commit
或者如果你想要更多关于如何在GitHub上处理大文件的general information。
下次在/log
.gitignore
答案 1 :(得分:3)
最近我遇到了同样的问题,实际上您可以只过滤特定文件的分支并将其删除-
git filter-branch --tree-filter 'rm -rf path/to/your/file' HEAD
答案 2 :(得分:1)
添加到先前的答案:
我们将按照您所说的从提交中删除大文件
从终端进行推送只是为了获取大文件路径git push --set-upstream origin Remote_branch_name
,在错误中找到大文件路径,类似RepositoryName/folders.../bigFileName
。
从所有分支中删除文件,git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch path_and_big_file'
越过我们在第一节中找到的路径,而不是path_and_big_file
。
执行git pull origin branch_name --allow-unrelated-histories
不会出现unrelated histories
错误
现在尝试推送到git,它应该可以工作
答案 3 :(得分:0)
您可以在提交前恢复git add。
检查此问题:How to undo 'git add' before commit? 它应该工作。并且不要将大文件发送给git,它不值得;)
此外,通过在日志路径中添加git ignore来排除日志。
答案 4 :(得分:0)
@Daniel
您可以使用.gitignore
文件从git repo中忽略该log(s)文件。
为此,您必须将以下行添加到.gitignore
文件
/log
并尝试再次提交。
希望这些细节可以帮助您解决问题。
答案 5 :(得分:0)
要改善上述答复之一,您需要
git filter-branch -f --tree-filter 'rm -f /path/to/file' HEAD --all
以便甚至从历史记录中删除文件。您需要-f
来强制重写任何备份,并且需要--all
从所有分支中删除文件。这里的更多信息:Git docs
您的大文件错误不会通过从git缓存中删除而消失,因为它仍然潜伏在提交历史中。
答案 6 :(得分:0)
git reset --soft HEAD~1
然后从提交中排除文件。
注意:使用HEAD〜N返回N次以前的提交。
使用它,返回一个提交,如果可以看到,从提交中删除大文件,然后重新提交并推送。
这应该可以解决问题
答案 7 :(得分:0)
添加到先前的答案:
git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch path_to_the_file/your_big_file
'
另外,当我尝试拉动时,出现“拒绝合并无关的历史记录”。
解决方案是使用git pull origin branch_name --allow-unrelated-histories
。
然后解决您可能的冲突,并在没有big_file的情况下进行这次推送。
答案 8 :(得分:0)
这个命令对我有用
git filter-branch -f --index-filter 'file path'
答案 9 :(得分:0)
我已经删除了该文件,认为这会有所帮助。在分支上运行此命令对我有用。
git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch path/to/file'