一、问题

近期在使用git时遇到一个问题,就是在git上传文件时,将一个100兆的大文件添加到了git,并执行了push操作,这时在上传完毕后,会提示这个错误

Large files detected
see http:git.io/iEPt8g for more information
this is larger than GitHubs recommended maximum file size of 50MB

即git无法上传超过50M的单个文件。

如果未push,可通过git commit --amend命令修复,下面2.6有将如何使用。

二、解决办法

解决办法是通过git reset HEAD~1方式撤销该版本的文件提交,之后的版本文件保留,但需重新添加一次,具体使用举例如下

1、创建一个本地git项目

使用git clone 命令,创建一个本地git项目 如

E:\Project\Git\MVC> git clone https://github.com/flowbywind/PagedListVnext.git  

2、项目中添加文件

2.1在项目目录下添加1.txt文件,执行add和commit操作,具体如下

2.2 在项目目录下添加大文件(100多M),执行add和commit操作,具体如下

2.3 在项目目录下继续添加文件,执行add和commit操作,具体如下

2.4执行git push 操作

由于2.2中的文件超过50M,执行git push origin master命令之后,会出现文章开头说的问题,这时候你会如果删除了该大文件,并git commit操作,在git push之后依然会上传该大文件。这样就照成了每次都提交不了的问题,所以我们要做的是撤销步骤2,并不影响步骤2后续的文件。

2.5 撤销步骤2的操作

使用命令git reset --mixed HEAD~2,回退到第一步,将步骤2取消掉,步骤3的文件将会撤销,变成等待添加,但不会丢失,我们只需要在add一次即可。

这时候我们发现,执行完该命令后任务回退到第一步操作,我们把刚才的大文件给删掉,然后执行添加命令

然后执行git push origin master 实现将后续文件上传。

2.6 忘记删掉大文件,又进行了commit操作之后的修复。

如果忘记删掉大文件,又直接commit了,但仅限于未push,可通过git commit --remond命令撤销操作,具体如下

三、备注

关于git reset命令,包括 --mixed,--soft --hard等,其中--mixed为默认方式,他们之间的区别如下

git reset –mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息
git reset –soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
git reset –hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容
git reset -soft :取消了commit
git reset -mixed(默认) :取消了commit ,取消了add
git reset -hard :取消了commit ,取消了add,取消源文件修改

参考文章

git 撤销commit

git revert 和reset的区别

git 撤销提交的文件的更多相关文章

  1. 如何使用 Git LFS 提交大文件?

    参考资料: An open source Git extension for versioning large files Git LFS的使用 如何使用 Git LFS 提交大文件? Git LFS ...

  2. git一键提交修改文件

    git一键提交修改文件 首先安装git, 有git bash: 新建一个gitcmt文件,放置于与你的项目同级的目录里: 使用:打开git bash, 方法1. git pull\git status ...

  3. git tag、gitignore和git撤销提交

    前言 最近在git的使用过程中遇到了一些新的问题,所以写下来方便自己回忆. git tag 打标签 git tag -a v1.00 -m "注释" git tag 打标签命令 - ...

  4. git 只提交部分文件 拉取pull远程仓库

    正常的团队开发中,在提交代码push之前要先pull拉取远程仓库的代码.而拉取pull操作需要先commit修改的文件才能成功. 那么问题来了,当我只想push提交部分代码的时候,同样需要pull拉取 ...

  5. git 配置提交过滤文件

    1)在Git项目中定义.gitignore文件 2)在Git项目的设置中指定排除文件 3)定义Git全局的 .gitignore 文件

  6. 删除文件以后,如何通过git撤销删除的文件,不提交到远端代码库

    检查状态,看看发生了什么:$ git statusOn branch masterChanged but not updated:(use "git add/rm <file>. ...

  7. Git撤销提交和修改相关操作

    团队开发中经常遇到错误删除文件,错误提交等情况,那么使用Git该如何正确的进行撤销和恢复呢? 一.增补提交 git commit –C HEAD –a --amend -C表示复用指定提交的提交留言, ...

  8. git 撤销更改的文件

    在没有git add之前: 1.撤销所有更改:git checkout . 2.撤销指定文件的更改:git checkout -- file.txt git add之后: git reset HEAD ...

  9. git撤销提交(commit)

    我们知道Git有三大区(工作区.暂存区.版本库)以及几个状态(untracked.unstaged.uncommited) 一.简介 Git 保存的不是文件的变化或者差异,而是一系列不同时刻的文件快照 ...

随机推荐

  1. JavaWeb技术(一):JDBC简介

    一.  JDBC简介 1. Java Database Connectivity(JDBC) 使用JDBC可以对数据库进行访问 2. JDBC的核心接口 1)DriverManager 驱动管理器接口 ...

  2. git分支管理一

    1.创建本地分支 local_branch git branch local_branch 2.创建本地分支local_branch 并切换到local_branch分支 git checkout - ...

  3. JSP目录

    JSP目录   课时1    jsp概述和背后原理31:11 课时2    三种jsp的scriptlet语法27:29 课时3    jsp的注释14:00 课时4    JSP4个域对象的作用域3 ...

  4. Nodejs Express下引入本地文件的方法

    Express的结构如下: |---node_modules------用于安装本地模块.     |---public------------用于存放用户可以下载到的文件,比如图片.脚本文件.样式表 ...

  5. sql报句柄无效。 (异常来自 HRESULT:0x80070006 (E_HANDLE))

    是由于数据库连接资源被耗尽或者用完没被释放导致的. 我在字符串中加了启用连接池好了. 如果错误信息为:sql 无效操作.连接被关闭 也是这个问题导致的.

  6. oracle数据库升级记(记一次10.2.0.3版本升级到11.2.0.1版本的过程)

    操作系统:windows xp 已有数据库版本:10.2.0.3 升级目标版本:11.2.0.1 步骤大纲: 在源操作系统(安装有10.2.0.3数据库的操作系统)上安装11.2.0.1数据库软件,然 ...

  7. [03]APUE:文件 I/O

    [a] open #include <fcntl.h> int open(const char *path, int oflag, ... ,mode_t mode) 成功返回文件描术符, ...

  8. Oracle sys和system用户、sysdba 和sysoper系统权限、sysdba和dba角色的区别

    sys和system用户区别 1)最重要的区别,存储的数据的重要性不同 sys所有oracle的数据字典的基表和视图都存放在sys用户中,这些基表和视图对于oracle的运行是至关重要的,由数据库自己 ...

  9. .net走向设计2—设计工具

    1.思维导图 2.项目管理工具 3.常用UML工具 4.数据库设计工具

  10. VS2013正确设置DLL环境变量目录的方法

    VS有个比较迷惑人的选项,就是在工程>>属性中有个Executable Directories设置项, 几乎所有地球人都认为这个选项是设置exe可执行文件依赖的DLL目录用的,这无疑会方便 ...