美文网首页
git核武器解决超大文件修改提交被拒

git核武器解决超大文件修改提交被拒

作者: 4VZhang | 来源:发表于2018-11-14 11:33 被阅读48次

提交本地修改被拒---被拒原文如下:

git -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sourcetree push -v origin dev:dev 
Pushing to https://git.oschina.net/***/jsb_iOS.git
POST git-receive-pack (chunked)
remote: Powered by Gitee.com        
remote: warning: Large files detected.        
remote: error: File Pods/AMap3DMap-NO-IDFA/MAMapKit.framework/MAMapKit is 137.41 MB; this exceeds file size limit of 100.0 MB        
remote: error: hook declined to update refs/heads/dev        
To https://git.oschina.net/***/jsb_iOS.git
 ! [remote rejected] dev -> dev (hook declined)
error: failed to push some refs to 'https://git.oschina.net/***/jsb_iOS.git'
Completed with errors, see above

被拒原因分析:本地提交的修改中包含超过100M大小的文件,导致git拒绝提交!

根据git官网给出的核武器(filter-branch)来解决此问题!同时借鉴前车之鉴

  • --tree-filter 选项在检出项目的每一个提交后运行指定的命令然后重新提交结果

  • --all 为了让 filter-branch 在所有分支上运行,可以给命令传递 --all 选项

  • --prune-empty 表示如果修改后的提交为空则扔掉不要

  • -f 是忽略备份。不加这个选项第二次运行这个命令时会出错,意思是 git 上次做了备份,现在再要运行的话得处理掉上次的备份。

  • HEAD~3..HEAD 从当前提交之前的第3次提交 到当前提交 都执行此命令

git filter-branch -f  --prune-empty --tree-filter 'rm -f Pods/AMap3DMap-NO-IDFA' HEAD~40..HEAD
Rewrite bb6be8af9994cca8cceb943cf19d1b065a56319c (38/70) (12 seconds passed, remaining 10 predicted)    rm: Pods/AMap3DMap-NO-IDFA: is a directory
tree filter failed: rm -f Pods/AMap3DMap-NO-IDFA

-f十分重要,因为只能删除文件,而不能删除文件夹; 如果有多个文件需要删除就需要 添加上-f的命令,以免第二次运行这个命令出错!

建议:检出一个新分支,在新分支上做如下操作;达到自己想要的效果后,再回到主分支上修改!

//从指定的commit中删除误操作文件的记录
git filter-branch --tree-filter 'git rm -f --ignore-unmatch {{文件名}}' [commit1..commit2]

//从当前分支的前30次提交开始遍历,删除误操作文件的引用
git filter-branch --tree-filter 'git rm -f {{文件名}}' HEAD~30..HEAD

解决办法:

打开终端,
cd到当前项目目录下,
git filter-branch -f --prune-empty --tree-filter 'rm -f Pods/AMap3DMap-NO-IDFA/MAMapKit.framework/MAMapKit' HEAD~40..HEAD

执行结果如下:


执行结果.jpeg

相关文章

  • git核武器解决超大文件修改提交被拒

    提交本地修改被拒---被拒原文如下: 被拒原因分析:本地提交的修改中包含超过100M大小的文件,导致git拒绝提交...

  • GitHub基本使用

    git add -A提交所有变化 git add -u提交被修改(modified)和被删除(deleted)文件...

  • 16 git

    git status :列出目录所有还没有被git管理的文件和被git管理且被修改但还未提交(git commit...

  • Git解决代码修改冲突

    Git 操作说明 Git下载项目 操作命令 Git上传提交 操作命令 Git解决同一文件多人修改冲突 操作步骤

  • 03 Git文件版本控制初步

    修改提交 git status命令可以让我们时刻掌握仓库当前的状态 若文件被修改,git status会显示如下:...

  • Git基本操作(三)

    修改文件 现在我想改一下仓库里文件的内容,现提交到仓库中去 (没有修改可以被提交,使用 “git add” 命令添...

  • Git命令备忘

    Git文件的状态 已修改modified-文件被修改了,但是还没有提交保存。 已暂存staged-已修改的文件放在...

  • git 使用

    git 重要概念 已提交....该文件已经被安全地保存在本地数据库中了 已修改....修改了某个文件,但还没有提交...

  • git修改文件后,怎么提交到远程仓库

    修改文件后,怎么提交到远程仓库 1.git status 查看git是否有修改内容需要提交 2.git add 指...

  • github pull request 创建

    一、修改文件&提交文件 1、查看改动 修改文件后可以使用git status 查看本地有哪些改动 2、提交修改 g...

网友评论

      本文标题:git核武器解决超大文件修改提交被拒

      本文链接:https://www.haomeiwen.com/subject/qhidfqtx.html