git 撤销提交的文件

1、问题git

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

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

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

若是未push,可经过git commit --amend命令修复,下面2.6有将如何使用。spa

2、解决办法3d

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

一、建立一个本地git项目 orm

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

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

二、项目中添加文件rem

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

image

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

image

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

image

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一次便可。

image

image

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

image

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

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

若是忘记删掉大文件,又直接commit了,但仅限于未push,可经过git commit --remond命令撤销操做,具体以下

image

3、备注

关于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,取消源文件修改
相关文章
相关标签/搜索