</></>腾讯工蜂-代码协作管理工具2f66e72f66e7腾讯工蜂-代码协作管理工具</>企业微信TAPD腾讯文档腾讯会议腾讯CICodeCCG腾讯工蜂功能介绍SR</>PTU
LFS/ LFS实战

转换普通文件为LFS托管

工蜂系统默认拦截大于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

如果本地已经提交过包含大文件的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 addgit commit操作。使用 git lfs ls-files 确认一下,是否已经track LFS对象。(如果ls-files列表为空,说明没track上)

这个时候能正常push了,push时可以看到 Uploading LFS objects字样。(如果LFS对象没push上,可以尝试git lfs push)

本地全部历史都需进行LFS转换

如果项目是从外部导入或从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