亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

解決使用commit提交大文件無法推送到遠程庫問題及git rebase使用詳解

2024-07-21 02:03:33
字體:
來源:轉載
供稿:網友

解決這個問題并沒有特別的(刪除提交歷史中某個文件,然后重新push),但是由于開始的使用失誤,中間有使用git rebasegit reset命令處理,所以特此記錄下

大文件無法push到遠程倉庫

問題

首先,故事(事故)的起因是這樣的。

某次git push(類似測試使用,沒有分支)到遠程倉庫時發生如下無法提交大文件的報錯(大文件是一個pdf文件)

$ git pushEnumerating objects: 204, done.Counting objects: 100% (204/204), done.Delta compression using up to 4 threadsCompressing objects: 100% (183/183), done.Writing objects: 100% (187/187), 419.00 MiB | 2.21 MiB/s, done.Total 187 (delta 21), reused 0 (delta 0)remote: Resolving deltas: 100% (21/21), completed with 12 local objects.remote: Powered by GITEE.COM [GNK-3.8]remote: error: File: db501995ac30070d50bdc115a7708f9ba84332d3 403.57 MB, exceeds 100.00 MB.remote: Use command below to see the filename:remote: git rev-list --objects --all | grep db501995ac30070d50bdc115a7708f9ba84332d3remote: Please remove the file from history and try again. (https://gitee.com/help/articles/4232)To gitee.com:findmoon/xxxx.git ! [remote rejected] master -> master (pre-receive hook declined)error: failed to push some refs to 'git@gitee.com:findmoon/xxxx.git'

根據提示,如下查看大文件是哪個

commit的大文件無法push到遠程庫解決辦法

首先說一下解決辦法,需要修改提交歷史,刪除已提交到本地倉庫的大文件的提交記錄,

從commit的提交歷史中刪除指定文件的命令為git filter-branch --tree-filter 'rm -f 文件名' HEAD

如下,刪除大文件

$ git filter-branch --tree-filter 'rm -f "Electron/pdf/677969 xxxx xxx.pdf"' HEADRewrite d1244f8fbc1f08b473bd498c023b09bd8ac3246b (12/12) (156 seconds passed, remaining 0 predicted)Ref 'refs/heads/master' was rewritten

執行刪除成功會返回Ref 'refs/heads/master' was rewritten提示,如果返回unchanged則表示沒有任何更改。

如果文件路徑包含空格需要用引號將刪除文件路徑包含起來。

然后重新push推送成功。

整體操作如下:

git filter-branch命令:

參考自git誤commit大文件導致不能push問題解決

git commit后的回滾

撤銷已經提交的commit有兩種方法:

使用 git reset --hard HEAD^

使用 git rebase -i HEAD~n

git reset --hard 丟棄最新的提交

代碼提交后,需求發生變化導致之前提交的已經不合適,或者 代碼提交后發現有嚴重bug,需要回滾可是使用這個命令:

git reset --hard HEAD^

1,HEAD^ 表示 最新提交HEAD位置往回數一個提交, 幾個 ^ 就往回數幾個提交;

2,HEAD~n 表示 最新提交HEAD位置往回數n個提交

reset 命令只能回滾最新的提交。如果只想刪除指定的某個提交,而保留最新的一次或兩次commit,reset就無法做到了。

reset命令git 刪除某次指定的提交

git rebase -i 丟棄指定提交

如果想撤銷中間某次commit的情況,可以使用如下的命令:

git rebase -i HEAD~2(列出最新的兩次提交,然后決定對應提交的操作)

rebase -irebase --interactive 的縮寫;

git rebase -i 不僅可以刪除commit, 還可以修改commit。 具體的可以查看rebase中提示的參數

如下執行git rebase查看命令參數:

$ git rebase -i HEAD~2pick 71add05 20200225同步pick 45d4805 測試刪除中間某次commit# Rebase 36b460a..45d4805 onto 36b460a (2 commands)## Commands:# p, pick <commit> = use commit# r, reword <commit> = use commit, but edit the commit message# e, edit <commit> = use commit, but stop for amending# s, squash <commit> = use commit, but meld into previous commit# f, fixup <commit> = like "squash", but discard this commit's log message# x, exec <command> = run command (the rest of the line) using shell# b, break = stop here (continue rebase later with 'git rebase --continue')# d, drop <commit> = remove commit# l, label <label> = label current HEAD with a name# t, reset <label> = reset HEAD to a label# m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]# . create a merge commit using the original merge commit's# . message (or the oneline, if no original merge commit was# . specified). Use -c <commit> to reword the commit message.## These lines can be re-ordered; they are executed from top to bottom.## If you remove a line here THAT COMMIT WILL BE LOST.## However, if you remove everything, the rebase will be aborted.## Note that empty commits are commented out

常用的如下:

  • edit: 使用本次提交,在rebase到這次提交時候,會暫停下來等待修正
  • pick:使用本次提交,不操作修改
  • drop:刪除這次提交

如下,修改查看最近3次的提交,然后刪除(drop)倒數第三次commit,保存退出即可將倒數第三次commit中提交的所有內容刪除

回滾最新的提交 :git resetgit rebase 命令都可以

回滾中間某次提交: git rebase 可以, git reset 不可以

如果提交已經同步到遠程倉庫,需要使用git push origin -f branch(分支名) 來將回滾也同步到遠程倉庫(master 分支謹慎使用 -f)

主要參考自Git回退代碼到某次commit的實現方法

git rebase

git rebase執行失敗后的退出

像上面,執行git rebase有可能導致失敗,具體表現為bash中的倉庫標識變為了(master|REBASE 1/10)(m/n視reabse編輯內容而定)

解決辦法是:執行git rebase --abort即可退出這個錯誤,回退到當前分支中,且數據和文件也都能恢復。

不小心git rebase后出現(master|REBASE 1/10)的解決辦法

git rebase成功后的回退

上面講的是git rebase失敗后的退出(,或回退),如果成功刪除了某次commit,導致最終一些文件或數據丟失,如何恢復呢?

不要輕易使用 git rebase -i HEAD 刪除某次提交

git rebase -i HEAD~2中刪除某次提交的話,這次提交的所有更改和新增文件會全部取消,覆蓋本地工作目錄中的文件,也就是刪除的這次提交和本次提交的上一次提交中間的所有更改都會取消,即使pick了刪除提交的下一次提交,也無法保留(保留到最新提交時所有文件和文件夾的狀態)

可以使用git reset --hard ID命令,直接恢復commit到指定的提交時刻。

git reflog查看git提交記錄

如上,可以直接看到需要恢復到的commit ID是多少。比如恢復到Id為71add05的時刻,執行git reset --hard 71add05等待恢復。本地倉庫和文件就能恢復到指定提交時刻。

恢復指定的某次commit成功。

git rebase 成功之后如何撤銷

Git rebase命令使用實戰

刪除文件后需要執行git add -Agit rm <file>,將刪除添加到暫存區, 如果執行 git add. 是不行的,區別如下:

git add -A 保存所有的修改(包括刪除的文件、新增文件、已有文件的修改變更)git add . 保存新的添加和修改,但是不包括刪除git add -u 保存修改和刪除,但是不包括新建文件。

到此這篇關于記一次使用commit提交大文件無法推送到遠程庫解決問題過程及git rebase使用的文章就介紹到這了,更多相關commit提交大文件git rebase使用內容請搜索武林網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持武林網!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国语自产精品视频在线看抢先版图片| 亚洲国产日韩欧美在线图片| 欧美丰满少妇xxxx| 久久天天躁狠狠躁夜夜躁2014| 国产亚洲一区二区精品| 91精品视频观看| 欧美日韩亚洲天堂| 亚洲美女视频网站| 色综合亚洲精品激情狠狠| 欧美日韩爱爱视频| 日韩免费观看av| 国产精品久久久久久久久免费看| 最近日韩中文字幕中文| 亚洲国模精品私拍| 亚洲免费电影在线观看| 亚洲欧美三级伦理| 日韩成人免费视频| 黑人巨大精品欧美一区二区免费| 欧美成人国产va精品日本一级| 亚洲乱码国产乱码精品精天堂| 国精产品一区一区三区有限在线| 亚洲国产精品国自产拍av秋霞| 北条麻妃99精品青青久久| 日韩在线观看网站| 深夜福利91大全| 久久在线精品视频| 亚洲欧美另类国产| 国产精品一区专区欧美日韩| 播播国产欧美激情| 国模极品一区二区三区| 欧美日韩福利在线观看| 亚洲欧美日韩精品久久| 红桃av永久久久| 国产精品96久久久久久又黄又硬| 欧美亚洲视频一区二区| 国产欧美精品一区二区| 成人网中文字幕| 精品无人国产偷自产在线| 日韩精品久久久久久久玫瑰园| 国产成人在线播放| 国产精品永久免费在线| 成人高h视频在线| 亚洲夜晚福利在线观看| 2020国产精品视频| 综合欧美国产视频二区| 国产精品久久久久久久久| 中文字幕欧美日韩精品| 亚洲国产成人av在线| 97久久超碰福利国产精品…| 91系列在线播放| 国产欧美精品一区二区| 国产精品欧美在线| 77777少妇光屁股久久一区| 青青久久av北条麻妃海外网| 国产精品成人av性教育| 国产精品美女主播在线观看纯欲| 国产亚洲欧美视频| 欧美洲成人男女午夜视频| 国语自产精品视频在线看一大j8| 久久精品亚洲国产| 日韩中文字幕在线观看| 久久视频免费在线播放| 欧美精品激情在线| 国产欧美亚洲视频| 国产精品91一区| 亚洲综合中文字幕68页| 国产v综合ⅴ日韩v欧美大片| 欧美激情xxxx| 国产69久久精品成人看| 国产亚洲成av人片在线观看桃| 日韩在线视频二区| 热久久免费国产视频| 中文字幕av日韩| xvideos成人免费中文版| 日韩欧美国产激情| 久久精品视频导航| 中文国产成人精品久久一| 欧美大片va欧美在线播放| 亚洲奶大毛多的老太婆| 欧美精品videossex性护士| 97在线免费观看视频| 日韩欧美亚洲国产一区| 国产精品最新在线观看| 亚洲成色777777女色窝| 久久精品视频免费播放| 欧美大成色www永久网站婷| 91经典在线视频| 在线视频中文亚洲| 亚洲精品国精品久久99热一| 91色视频在线导航| 精品福利一区二区| 亚洲美女精品成人在线视频| 国产精品成人va在线观看| 成人av色在线观看| 成人免费网视频| 91久久在线视频| 国产精品美女999| 国产一区二区色| 久久久免费电影| 日本aⅴ大伊香蕉精品视频| 日韩欧美在线播放| 性色av一区二区咪爱| 久久久中精品2020中文| 亚洲一区二区三区在线视频| 97国产suv精品一区二区62| 成人免费直播live| 粗暴蹂躏中文一区二区三区| 日韩av在线免费看| 91av在线不卡| 亚洲第一区在线| 亚洲精品999| 久久伊人91精品综合网站| 日韩欧美亚洲成人| 中文字幕一区二区精品| 亚洲欧美www| 精品亚洲一区二区三区在线观看| 狠狠久久五月精品中文字幕| 日韩欧美一区二区三区久久| 欧美孕妇毛茸茸xxxx| 成人av色在线观看| 宅男66日本亚洲欧美视频| 国内精品视频一区| 91色视频在线观看| 亚洲一区第一页| 在线观看不卡av| 精品成人国产在线观看男人呻吟| 一区二区成人精品| 日韩在线一区二区三区免费视频| 日韩免费在线免费观看| 亚洲视频在线看| 日韩av在线最新| 国内外成人免费激情在线视频网站| 欧美午夜激情在线| 国产va免费精品高清在线| 91香蕉嫩草神马影院在线观看| 久久久久久久91| 超碰日本道色综合久久综合| 久久国产精品99国产精| 中文字幕在线观看亚洲| 国产性猛交xxxx免费看久久| 日韩av网站大全| 91久久国产综合久久91精品网站| 亚洲aa在线观看| 亚洲一区二区久久久久久久| 久久九九有精品国产23| 欧美日韩国产在线播放| 日本a级片电影一区二区| 中文字幕在线观看日韩| 亚洲最大福利网| 欧美日韩综合视频| 日韩女在线观看| 欧美日韩国产123| 国产噜噜噜噜久久久久久久久| 国产精品视频一区二区高潮| 亚洲天堂第一页| 91老司机精品视频| 少妇久久久久久| 91在线视频精品| 国内伊人久久久久久网站视频| 久久久久中文字幕2018| 亚洲第一精品自拍| 国产成人免费av电影| 精品久久久香蕉免费精品视频| 中文字幕亚洲一区二区三区|