未使用 git lfs 的仓库添加大文件支持

2025-06-08 17:26

Windows git 默认支持 lfs。但 gitee 免费版不支持 git lfs,需特别注意。

设置 git lfs

git lfs install

扫描仓库

扫描仓库查看有哪些大文件存在:

# linux
git ls-files | grep -E '\.psd|\.jpg'
# windows
git ls-files | Select-String -Pattern '\.psd$|\.jpg$'

还可使用

git lfs migrate info --include="*.psd,*.jpg"

配置

配置 .gitattributes

###############################
# Git Line Endings            #
###############################

# Set default behaviour to automatically normalize line endings.
# * text=auto
# 文本文件全部使用lf换行,eslint prettier等工具保持一致。
# text=auto eol=lf
# https://start.spring.io/ 生成的项目,mvnw 文件使用 LF 换行。
/mvnw text eol=lf

# Force batch scripts to always use CRLF line endings so that if a repo is accessed
# in Windows via a file share from Linux, the scripts will work.
*.{cmd,[cC][mM][dD]} text eol=crlf
*.{bat,[bB][aA][tT]} text eol=crlf

# Force bash scripts to always use LF line endings so that if a repo is accessed
# in Unix via a file share from Windows, the scripts will work.
*.sh text eol=lf

###############################
# Git Large File System (LFS) #
###############################

# Archives
*.7z filter=lfs diff=lfs merge=lfs -text
*.br filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.tar filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text

# Documents
*.pdf filter=lfs diff=lfs merge=lfs -text
*.doc filter=lfs diff=lfs merge=lfs -text
*.DOC filter=lfs diff=lfs merge=lfs -text
*.docx filter=lfs diff=lfs merge=lfs -text
*.DOCX filter=lfs diff=lfs merge=lfs -text
*.dot filter=lfs diff=lfs merge=lfs -text
*.DOT filter=lfs diff=lfs merge=lfs -text
*.xls filter=lfs diff=lfs merge=lfs -text
*.XLS filter=lfs diff=lfs merge=lfs -text
*.xlsx filter=lfs diff=lfs merge=lfs -text
*.XLSX filter=lfs diff=lfs merge=lfs -text

# Images
*.gif filter=lfs diff=lfs merge=lfs -text
*.ico filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.jpeg filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.webp filter=lfs diff=lfs merge=lfs -text
# Adobe Photoshop
*.psd filter=lfs diff=lfs merge=lfs -text
# Adobe Illustrator
*.ai filter=lfs diff=lfs merge=lfs -text

# Audio
*.kar filter=lfs diff=lfs merge=lfs -text
*.m4a filter=lfs diff=lfs merge=lfs -text
*.mid filter=lfs diff=lfs merge=lfs -text
*.midi filter=lfs diff=lfs merge=lfs -text
*.mp3 filter=lfs diff=lfs merge=lfs -text
*.ogg filter=lfs diff=lfs merge=lfs -text
*.ra filter=lfs diff=lfs merge=lfs -text

# Video
*.3gpp filter=lfs diff=lfs merge=lfs -text
*.3gp filter=lfs diff=lfs merge=lfs -text
*.as filter=lfs diff=lfs merge=lfs -text
*.asf filter=lfs diff=lfs merge=lfs -text
*.asx filter=lfs diff=lfs merge=lfs -text
*.avi filter=lfs diff=lfs merge=lfs -text
*.fla filter=lfs diff=lfs merge=lfs -text
*.flv filter=lfs diff=lfs merge=lfs -text
*.m4v filter=lfs diff=lfs merge=lfs -text
*.mng filter=lfs diff=lfs merge=lfs -text
*.mov filter=lfs diff=lfs merge=lfs -text
*.mp4 filter=lfs diff=lfs merge=lfs -text
*.mpeg filter=lfs diff=lfs merge=lfs -text
*.mpg filter=lfs diff=lfs merge=lfs -text
*.ogv filter=lfs diff=lfs merge=lfs -text
*.swc filter=lfs diff=lfs merge=lfs -text
*.swf filter=lfs diff=lfs merge=lfs -text
*.webm filter=lfs diff=lfs merge=lfs -text

# Fonts
*.ttf filter=lfs diff=lfs merge=lfs -text
*.eot filter=lfs diff=lfs merge=lfs -text
*.otf filter=lfs diff=lfs merge=lfs -text
*.woff filter=lfs diff=lfs merge=lfs -text
*.woff2 filter=lfs diff=lfs merge=lfs -text
*.pfb filter=lfs diff=lfs merge=lfs -text

# Other
*.exe filter=lfs diff=lfs merge=lfs -text
*.dat filter=lfs diff=lfs merge=lfs -text
# IP 地址库。如:ip2region.xdb
*.xdb filter=lfs diff=lfs merge=lfs -text

替换

将仓库中 git 大文件,替换成 git lfs 管理:

git lfs migrate import --include="*.7z,*.br,*.gz,*.tar,*.zip,*.jar,*.pdf,*.doc,*.DOC,*.docx,*.DOCX,*.dot,*.DOT,*.xls,*.XLS,*.xlsx,*.XLSX,*.gif,*.ico,*.jpg,*.jpeg,*.png,*.webp,*.psd,*.ai,*.kar,*.m4a,*.mid,*.midi,*.mp3,*.ogg,*.ra,*.3gpp,*.3gp,*.as,*.asf,*.asx,*.avi,*.fla,*.flv,*.m4v,*.mng,*.mov,*.mp4,*.mpeg,*.mpg,*.ogv,*.swc,*.swf,*.webm,*.ttf,*.eot,*.otf,*.woff,*.woff2,*.pfb,*.exe,*.dat,*.xdb"

本地迁出大文件:

git lfs fetch
git lfs checkout

清理空间:

git reflog expire --expire=now --all
git gc --prune=now

这会修改 git 的历史记录,使用强制推送同步到远程服务器:

git push origin --force --all
下一篇: 没有了
0791-85271700
QQ咨询:1779755751
QQ交流群:626599871
微信咨询
微信扫码咨询
微信交流群
微信交流群
Powered by UJCMS © 2010-2025 All Rights Reserved
QQ咨询
电话
微信
微信扫码咨询