git commit的文件太大导致push失败解决方法:
问题描述
当提交本地修改到仓库时,出现如下问题:
文件大小超过100MB,导致不能成功push
解决办法:
这里整理了两种方法:
git reset
git reset 命令用于回退版本,可以指定退回某一次提交的版本。
git reset 命令语法格式如下:
git reset [--soft | --mixed | --hard] [HEAD]
–mixed 为默认,可以不用带该参数,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变。
具体实例:
git reset HEAD^ # 回退所有内容到上一个版本
git reset HEAD^ hello.php # 回退 hello.php 文件的版本到上一个版本
git reset 052e # 回退到指定版本
该方法简单粗暴,当然某些情况下不适合使用。目前还没有遇到,暂且不讨论。
git revert
相较于git reset,该命令更加温和,直接在commit提交的东西上修改,当然也相对更加复杂
操作
git revert -n commit-id
只会revert commit-id对应的内容,然后重新commit一个信息,不会影响其他的commit内容,如图是成功进入Revertinig的模式
这时候就重新进行一次提交就可,但是这个过程中不能再提交超过100MB的大文件。
冲突的相关操作
处理git revert过程中遇到的冲突
合并冲突后退出
git revert --abort
当前的操作会回到指令执行之前的样子,相当于啥也没有干,回到原始的状态
合并后退出,但是保留变化
git revert --quit
总结
浅谈一下git reset和git revert的区别
- git reset 是回滚到对应的commit-id,相当于是删除了commit-id以后的所有的提交,并且不会产生新的commit-id记录,如果要推送到远程服务器的话,需要强制推送-f
- git revert 是反做撤销其中的commit-id,然后重新生成一个commit-id。本身不会对其他的提交commit-id产生影响,如果要推送到远程服务器的话,就是普通的操作git push就好了
- 公共分支上找到不同分支的父节点,reset以后才重新提交,但是当commit信息混合到一起后,你想找都commit信息都困难。