" transform="translate(10.232 59.216) scale(1.339)" font-size="18" fill="#fff" font-family="DFShiYiW5-GB"></>
工蜂系统默认拦截大于100M的文件,这些文件必须使用LFS才能提交。如果push过大的文件(本图示例的为1M),会出现如下提示:
如何使用LFS,下面分三种情形详细介绍:
如果本地未提交过大文件,直接 git lfs track "*.log"
。(跟踪多种后缀:git lfs track "*.png" "*.jar"
)
注意:一定要先track再add、commit,如果没安装过LFS,请查看安装指南。
再进行git add和git commit操作。使用 git lfs ls-files
确认一下,是否已经track LFS对象。(如果ls-files列表为空,说明没track上)
这个时候能正常push了,push时可以看到 Uploading LFS objects字样。(如果LFS对象没push上,可以尝试git lfs push
)
如果git lfs ls-files
确认大文件都被跟踪了,push还是被拦截,请参考下面的情形。
如果本地已经提交过包含大文件的commit,如下图:
请使用 git reset --mixed
回退到未包含大文件的前一个commit点。示例中add txt
这个commit包含了大文件,所以要回退到上一个commit。
(只提交了一个commit,可以直接git reset --mixed HEAD^
;如果不清楚哪个commit包含大文件,可以git reset --mixed origin/master
,示例中为master
。)
注意:最多回退到origin/master
,再往前,push就会引起冲突了。
如何确定需要跟踪的文件后缀?(windows环境请用git自带的Git Bash,示例是查找超过1M的文件)
进行LFS跟踪:如果查找的大文件后台是.jar,直接 git lfs track "*.txt"
。(跟踪多种后缀:git lfs track "*.png" "*.jar"
)
注意:一定要先track再add、commit,如果没安装过LFS,请查看安装指南。
再进行git add
和git commit
操作。使用 git lfs ls-files
确认一下,是否已经track LFS对象。(如果ls-files列表为空,说明没track上)
这个时候能正常push了,push时可以看到 Uploading LFS objects字样。(如果LFS对象没push上,可以尝试git lfs push)
如果项目是从外部导入或从SVN导入的,本地全部历史都需进行LFS转换,且需保留历史的,请使用以下方式:
如上图,有几个commit包含超过1M的pdf和jar文件,直接push工程会被拦截导致报错。
如何知道全部的commit历史中哪些文件过大?必须使用(git-lfs/2.7.1及以上版本) git lfs migrate info --above="1 MB" --everything --top 10
对这个项目的全部分支的历史记录进行LFS对象转换,使用 git lfs migrate import --include="*.jar,*.pdf" --everything
确保lfs对象已跟踪后,推送到远端。(push全部可以 git push origin --all
git push origin --tags
,如果还不成功尝试git lfs push
)
注意:LFS对象转换会改写历史记录(即commit sha1会发生变化),再更新原(github或svn)项目时会产生大量冲突。
只适用一次迁移的情形,不适用github或svn和工蜂并行使用。(以后还有更新github或svn,需要重新clone一份,再做一次git lfs migrate
)