git 撤銷提交的文件


一、問題

近期在使用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操作,具體如下

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

三、備注

關於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,取消源文件修改


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM