国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Git(七).git 文件夾瘦身,GitLab 永久刪除文件

這篇具有很好參考價值的文章主要介紹了Git(七).git 文件夾瘦身,GitLab 永久刪除文件。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

一、問題背景

由于項目在打 Docker 包的時候,需要將前端的包也打到 Docker 容器中,所以將前端包和前端的 Dockerfile 文件都放在了后端的 Git 目錄下。

久而久之,由于前端包的更新迭代,Git 上面會一直保留前端包的歷史版本,所以整個后端的 .git 越來越大,截至目前已經(jīng)有 2.44G 了。每次有新的小伙伴加入 git 后都需要花很長時間來拉取代碼,苦不堪言,而且 Jenkins 上面新建項目的拉取也會超時。

Git(七).git 文件夾瘦身,GitLab 永久刪除文件,Git,git,gitlab

二、問題復(fù)現(xiàn)

2.1 新建項目

在 GitLab 上新建一個項目 my-test

Git(七).git 文件夾瘦身,GitLab 永久刪除文件,Git,git,gitlab

我們可以看到,新建好的項目,默認(rèn)只有 20KB。

Git(七).git 文件夾瘦身,GitLab 永久刪除文件,Git,git,gitlab

2.2 上傳大文件

執(zhí)行命令將項目克隆到本地:

git clone http://xxxx/xxx/xxx.git

此時,.git 文件夾大小為 30.7KB。

為了更加全面地測試,我們創(chuàng)建兩個分支,并且分別上傳文件。

分支、文件結(jié)構(gòu)對應(yīng)關(guān)系如下:

  • dev-test1 分支

    | - pdf 文件夾

    ? | - test_1.pdf 文件,12.8MB

    ? | - test_2.pdf 文件,12.8MB

  • dev-test2 分支

    | - pdf 文件夾

    ? | - test_1.pdf 文件,12.8MB

    ? | - test_2.pdf 文件,12.8MB

相關(guān)命令如下:

# 創(chuàng)建dev-test1分支
git checkout -b dev-test1
git add -A .
git commit -m "update test1"
git push origin dev-test1

# 創(chuàng)建dev-test2分支
git checkout -b dev-test2
git add -A .
git commit -m "update test2"
git push origin dev-test2

2.3 上傳結(jié)果

將大文件上傳到 GitLab 后,倉庫的大小如下:

  • .git11.2MB
Git(七).git 文件夾瘦身,GitLab 永久刪除文件,Git,git,gitlab
  • GitLab11.3MB

Git(七).git 文件夾瘦身,GitLab 永久刪除文件,Git,git,gitlab

三、解決方案

注意:操作前要保證是最新版本。

3.1 GitLab備份與還原

1)備份

在操作之前,我們要先備份 GitbLab 中的項目。最簡單的方式就是直接將項目導(dǎo)出來。

在 GitLab 上打開項目,進(jìn)入菜單 Settings -> General -> Advanced,點(diǎn)擊 Expand 打開折疊。

Git(七).git 文件夾瘦身,GitLab 永久刪除文件,Git,git,gitlab

點(diǎn)擊 Export project。

Git(七).git 文件夾瘦身,GitLab 永久刪除文件,Git,git,gitlab

可以看到提示,這個導(dǎo)出是一個異步的操作,當(dāng)導(dǎo)出完畢之后會將通知發(fā)送到郵箱。

Git(七).git 文件夾瘦身,GitLab 永久刪除文件,Git,git,gitlab

郵件中會有一個下載鏈接,點(diǎn)擊鏈接下載,保存24小時。

Git(七).git 文件夾瘦身,GitLab 永久刪除文件,Git,git,gitlab

下載后文件如下,文件名格式為:日期_時分秒_用戶名_項目名.tar.gz

Git(七).git 文件夾瘦身,GitLab 永久刪除文件,Git,git,gitlab

2)還原

點(diǎn)擊首頁的 New project。

Git(七).git 文件夾瘦身,GitLab 永久刪除文件,Git,git,gitlab

選擇 Import project。

Git(七).git 文件夾瘦身,GitLab 永久刪除文件,Git,git,gitlab

選擇 GitLab export。

Git(七).git 文件夾瘦身,GitLab 永久刪除文件,Git,git,gitlab

輸入項目名稱,選擇我們之前導(dǎo)出的 .tar.gz 文件,點(diǎn)擊 Import project。

Git(七).git 文件夾瘦身,GitLab 永久刪除文件,Git,git,gitlab

還原完畢,分支和大小都在。

Git(七).git 文件夾瘦身,GitLab 永久刪除文件,Git,git,gitlab

3.2 刪除方式一:git filter-repo 命令【推薦】

  • git-filter-repo 官網(wǎng): https://github.com/newren/git-filter-repo
  • python 官網(wǎng): https://www.python.org/

注意:git-filter-repo 工具需要依賴 Git 和 Python。

1)安裝
# 安裝(pip是Python自帶的安裝工具)
pip install git-filter-repo
# 查看版本
git-filter-repo --version

執(zhí)行結(jié)果:

Git(七).git 文件夾瘦身,GitLab 永久刪除文件,Git,git,gitlab

注意:git-filter-repo 需要在一個剛剛 clone 下來的倉庫中進(jìn)行操作,否則會操作失敗。

Aborting: Refusing to destructively overwrite repo history since
this does not look like a fresh clone.
(expected at most one entry in the reflog for HEAD)
Please operate on a fresh clone instead. If you want to proceed
anyway, use --force.

Git(七).git 文件夾瘦身,GitLab 永久刪除文件,Git,git,gitlab

2)刪除本地倉庫文件

git clone 到本地后立即執(zhí)行如下命令:

(不要做切換分支等操作,否則會報錯,刪除重新克隆才行。)

# 模糊匹配,刪除所有pdf文件(會同時刪除pdf文件夾)
git filter-repo --path-glob '*.pdf' --invert-paths

# 補(bǔ)充:精確匹配,僅刪除pdf/test_1.pdf
git filter-repo --path-glob 'pdf/test_1.pdf' --invert-paths

執(zhí)行結(jié)果如下:

Git(七).git 文件夾瘦身,GitLab 永久刪除文件,Git,git,gitlab

git filter-repo 命令本身是用來將處理后的本地倉庫重新推送到新的遠(yuǎn)程倉庫用的,所以執(zhí)行命令之后,查看 .git/config 配置文件,里面遠(yuǎn)程倉庫的內(nèi)容都被清空了:

Git(七).git 文件夾瘦身,GitLab 永久刪除文件,Git,git,gitlab

執(zhí)行之后,查看本地 .git 文件夾大小,從 11.2MB 直降至 32.8KB。

Git(七).git 文件夾瘦身,GitLab 永久刪除文件,Git,git,gitlab
3)重新關(guān)聯(lián)遠(yuǎn)程倉庫

重新關(guān)聯(lián)遠(yuǎn)程倉庫的命令如下:

git remote add origin https://git.xxx.cn/acgkaka/my-test.git
4)刪除遠(yuǎn)程倉庫文件

執(zhí)行如下命令,將本地倉庫的改動強(qiáng)制推送到遠(yuǎn)程倉庫即可。

git push --force origin --all

執(zhí)行結(jié)果如下:

Git(七).git 文件夾瘦身,GitLab 永久刪除文件,Git,git,gitlab

此時,GitLab 的遠(yuǎn)程倉庫大小還是 11.2 MB,并無效果,別擔(dān)心,還有最后一步操作。

Git(七).git 文件夾瘦身,GitLab 永久刪除文件,Git,git,gitlab

4)clean up 清理遠(yuǎn)程倉庫

做完上面的操作之后,等待半小時,是的,等待30分鐘,因為 GitLab 不會清理半小時內(nèi)提交的文件。

在 GitLab 上打開項目,進(jìn)入菜單 Settings -> Repository -> Repository cleanup,點(diǎn)擊 Expand 打開折疊。

Git(七).git 文件夾瘦身,GitLab 永久刪除文件,Git,git,gitlab

在使用 clean up 時,需要提交一個文件,這個文件就是文件根目錄下的 .git/filter-repo/commit-map。

Git(七).git 文件夾瘦身,GitLab 永久刪除文件,Git,git,gitlab

可以看到提示,這個導(dǎo)出是一個異步的操作,當(dāng)cleanup完畢之后會將通知發(fā)送到郵箱。

Git(七).git 文件夾瘦身,GitLab 永久刪除文件,Git,git,gitlab

郵件中會說明 cleanup 后的倉庫大小,為 0.1MB。

Git(七).git 文件夾瘦身,GitLab 永久刪除文件,Git,git,gitlab

再去 GitLab 查看遠(yuǎn)程倉庫大小,從 11.3MB 直降至 51KB,瘦身成功。

Git(七).git 文件夾瘦身,GitLab 永久刪除文件,Git,git,gitlab

(經(jīng)驗證,這種方式刪除掉的歷史文件,即使有其他成員的本地倉庫有未提交的版本,需要復(fù)制出來,刪除本地倉庫重新克隆后,再粘貼提交。)

3.3 刪除方式二:git branch-filter 命令【不推薦】

注意: 目前經(jīng)過嘗試,發(fā)現(xiàn) git branch-filter 雖然可以刪除分支中的文件歷史、提交記錄,但是并不會減少 GitLab 中遠(yuǎn)程倉庫的大小。

1)刪除本地倉庫文件

可以直接操作刪除所有分支的文件,但是要注意必須保證所有分支都是最新代碼才行。

也可以切換到具體分支,執(zhí)行 git pull 拉取最新代碼后,再進(jìn)行刪除,只要去除后面的 -- --all即可。

# 模糊匹配,刪除所有pdf文件(會同時刪除pdf文件夾)
git filter-branch --force --index-filter "git rm --cached --ignore-unmatch '*.pdf'" --prune-empty --tag-name-filter cat -- --all

# 補(bǔ)充:精確匹配,僅刪除pdf/test_1.pdf
git filter-branch --force --index-filter "git rm --cached --ignore-unmatch 'pdf/test_1.pdf'" --prune-empty --tag-name-filter cat -- --all

執(zhí)行結(jié)果如下,可以看到 dev-test1dev-test2 分支被重寫了。

Git(七).git 文件夾瘦身,GitLab 永久刪除文件,Git,git,gitlab

2)刪除遠(yuǎn)程倉庫文件

執(zhí)行如下命令,將本地倉庫的改動強(qiáng)制推送到遠(yuǎn)程倉庫即可。

# 推送本地所有分支到遠(yuǎn)程
git push --force --all

執(zhí)行結(jié)果如下,可以看到 dev-test1dev-test2 分支被強(qiáng)制更新了。

Git(七).git 文件夾瘦身,GitLab 永久刪除文件,Git,git,gitlab

我們可以去 GitLab 上面看下提交記錄,"如果之前的提交只涉及被刪除文件的話,對應(yīng)提交記錄就會被清空,如果提交中除了被刪除文件之外還包含其他文件,那么提交記錄和其他文件都會被保留,不受影響。

Git(七).git 文件夾瘦身,GitLab 永久刪除文件,Git,git,gitlab

3)重新 repack 遠(yuǎn)程分支到本地

執(zhí)行如下命令,刪除 refs/original 文件夾,并重新更新遠(yuǎn)程倉庫到本地。

git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin
git reflog expire --expire=now --all
git gc --prune=now

執(zhí)行之后,查看本地 .git 文件夾大小,從 11.2MB 直降至 32KB。

Git(七).git 文件夾瘦身,GitLab 永久刪除文件,Git,git,gitlab

再次聲明,這種方式雖然可以刪除分支中的文件歷史、提交記錄,但是并不會減少 GitLab 中遠(yuǎn)程倉庫的大小。遠(yuǎn)程倉庫大小依然為 11.3MB。(有大佬知道后面怎么處理的,歡迎評論補(bǔ)充)

Git(七).git 文件夾瘦身,GitLab 永久刪除文件,Git,git,gitlab

整理完畢,完結(jié)撒花~ ??





參考地址:

1.使用 git-filter-repo 清理 git 歷史記錄,https://nyakku.moe/posts/2020/06/12/use-git-filter-repo-clean-git-history.html

2.利用git-filter-repo無縫遷移git項目,https://zhuanlan.zhihu.com/p/465078705

3.git: 如何減少.git文件的大小?https://blog.csdn.net/LOI_QER/article/details/107911115

4…git文件過大,github倉庫瘦身,https://blog.csdn.net/luchengtao11/article/details/82531044

5.從Git倉庫(GitLab)中徹底去除大文件,https://zhuanlan.zhihu.com/p/589903338

6.git 倉庫越來越大,如何清理?https://juejin.cn/post/7254009710139146299文章來源地址http://www.zghlxwxcb.cn/news/detail-741055.html

到了這里,關(guān)于Git(七).git 文件夾瘦身,GitLab 永久刪除文件的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • git 刪除倉庫中多余的文件或者文件夾

    git 刪除倉庫中多余的文件或者文件夾

    目錄 問題 解決方案 第一步:同步代碼 第二步:刪除文件 第三步:提交 第四步:推送遠(yuǎn)端 在項目開發(fā)測試階段,將無意間將本地敏感的、或無用的文件或目錄不小心提交到遠(yuǎn)程倉庫,該怎么解決呢。 ?先pull遠(yuǎn)程代碼,保持同步。 填寫備注信息。 推送成功刷新倉庫。 如果

    2024年01月16日
    瀏覽(92)
  • git刪除已經(jīng)push的遠(yuǎn)程文件或文件夾

    在使用git提交項目時,有時候會誤提交一下文件,比如:*.iml,*.project,*.settings,.idea/*等文件,有時候這些不需要提交的文件可以加入到.gitignore,在提交的時候可以忽略這些文件,但是有時候我們忘記,就會出現(xiàn)誤提交一些文件,這時就需要我們刪除誤提交的文件,下面是

    2024年02月08日
    瀏覽(22)
  • 文件夾永久刪除怎么恢復(fù)

    電腦已經(jīng)成為生活中必不可少的一部分。我們通常會使用電腦來存儲和管理各種重要的文檔和文件。但是,隨著我們使用電腦的次數(shù)增加,難免會清理,如果不小心刪除了我們的文件夾。在這種情況下,我們可能會有一些后怕,當(dāng)我們想要找回這些文件夾時,重要的問題是

    2024年02月07日
    瀏覽(20)
  • git刪除遠(yuǎn)程倉庫上已提交的文件/文件夾

    git刪除遠(yuǎn)程倉庫上已提交的文件/文件夾

    由于給本地項目配置遠(yuǎn)程庫,誤提交很多不應(yīng)該提交的文件或文件夾,比如 .idea .settings .project .iml 以及日志等文件。以及由于 .gitignore 文件配置不正確很有可能導(dǎo)致某些不需要的目錄上傳到 git 遠(yuǎn)程倉庫上了。除了注意配置 .gitignore 文件外,以下是解決辦法。 提交了文件到自

    2024年02月11日
    瀏覽(39)
  • 如何刪除gitlab上的文件夾

    如何刪除gitlab上的文件夾

    參考:如何刪除gitlab上的文件夾 1.在本地新建一個文件夾,進(jìn)入文件夾,右鍵git bash here。 2.在命令行窗口輸入拉去gitlab倉庫的命令,git clone +\\\"倉庫地址\\\",然后查看是否拉取成功。 3.在本地把需要刪除的文件刪除,直接右鍵--刪除。 4.在文件夾內(nèi)右鍵git commit +\\\"對應(yīng)的分支\\\",提

    2024年02月13日
    瀏覽(15)
  • Git(三).git 文件夾詳解

    Git(三).git 文件夾詳解

    官網(wǎng)地址: https://www.git-scm.com/ 官方文檔: https://www.git-scm.com/docs 官方電子書: https://git-scm.com/book/zh/v2 GitHub: https://github.com/git/git 命令: git init 解析: 如果需要對現(xiàn)有的某個項目使用 Git 管理,只需要到項目所在目錄,執(zhí)行該命令即可。 作用: 初始化后,在當(dāng)前目錄下會

    2024年02月04日
    瀏覽(24)
  • 解決git clone后對應(yīng)文件夾沒有.git文件

    解決git clone后對應(yīng)文件夾沒有.git文件

    使用git clone 命令后發(fā)現(xiàn)對應(yīng)文件夾沒有找到.git文件 這是因為.git文件默認(rèn)是隱藏的,如果想看到,需要我們設(shè)置顯示隱藏的文件夾 通過以上操作就能夠?qū)⒔鉀Q找不到.git文件的問題。 注意:.git文件為版本庫,版本庫中儲存了配置信息,日志信息等,不需要我們修改。

    2024年02月11日
    瀏覽(96)
  • git add 文件、文件夾

    git add 添加多個文件,文件之間以空格隔開 多次git add source目錄下及子目錄下所有文件,home目錄下的所有.py文件 git add . ,注意 “.” 前面有空格,添加所有的文件, 或者 git add --all 添加所有的文件 git add 目的是將修改文件由工作區(qū)提交到暫存區(qū),可以多次提交,然后commit操

    2024年02月09日
    瀏覽(47)
  • Git中.gitignore的配置(git上傳忽略文件/文件夾)

    ? ? ? ? 在實際開發(fā)過程中,我們很多項目都需要使用git工具進(jìn)行代碼的拉取和提交等操作。但項目由于環(huán)境配置和打包等操作生成了一些不必要上傳的文件夾或者一些我們自定義的文件不需要上傳,這時候我們需要去配置.gitignore文件。 語法 # 開頭為注釋行 空行即直接寫文

    2024年02月12日
    瀏覽(24)
  • vscode顯示當(dāng)前打開的文件夾中沒有g(shù)it存儲庫,但實際上有.git文件夾。

    vscode顯示當(dāng)前打開的文件夾中沒有g(shù)it存儲庫,但實際上有.git文件夾。

    問題描述:當(dāng)前打開的文件夾中沒有 git 存儲庫。但實際上有.git文件夾。 解決方案:https://github.com/microsoft/vscode/issues/139598 The only way to make it work is to use the Git: Show Git Output… command. 在vscode的查看–命令面板,輸入show git,執(zhí)行后即可正確出現(xiàn)git 倉庫。 如果執(zhí)行上述命令后,

    2024年02月11日
    瀏覽(118)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包