如何使用GIT LFS跟踪iOS框架?

vie*_*one 29 git ios git-lfs

我希望通过智能方式使用lfs跟踪我的框架.所以这是我对git lfs的设置:

*.framework/Versions/A (.gitattributes)
*/*.framework/Versions/A (.gitattributes)
*/{*.framework}/Versions/A (.gitattributes)
Run Code Online (Sandbox Code Playgroud)

但它不起作用.我跑的时候

"git add ."
Run Code Online (Sandbox Code Playgroud)

lfs没有跟踪文件.

如何解决这个问题.谢谢!

ehr*_*rdt 29

重要提示:要成功使Git LFS正常工作,该文件可能尚未出现在您的Git历史记录中.

强制性步骤:

  1. 通过brew(或mac端口..)安装Git LFS

    brew install git-lfs

  2. 在Jour本地Git仓库中初始化LFS.否则你的命令将无效.

    git lfs install

// Updated pre-push hook. Git LFS initialized.

  1. 不要直接跟踪iOS框架(例如"opencv2.framework"),因为macOS会将其视为文件夹.只需跟踪框架内的一个大型二进制文件.

    git lfs track MyProject/Libraries/opencv2.framework/Versions/A/opencv2

// Tracking MyProject/Libraries/opencv2.framework/Versions/A/opencv2

  1. 添加所有文件,包括新生成的".gitattributes"

    git add .

  2. 提交更改

    git commit -m "added lfs binary"

  3. 现在验证LFS是否正确跟踪了该文件

    git lfs ls-files

// 604bd36eb5 * MyProject/Libraries/opencv2.framework/Versions/A/opencv2

  1. 按下提交,看到Git首先上传大文件

    git push

// Git LFS: (1 of 1 files) 3.54 MB / 87.34 MB

你完成了.

  • 很好的答案,但是说我有一堆.framework,有没有办法可以找到所有大型二进制文件的框架,而不是mannally一个接一个地做? (4认同)

sgl*_*l0v 7

您可以按照以下步骤将所有框架添加到 git lfs:

brew install git-lfs                                 # install via homebrew
git lfs install                                      # initialize lfs for yor repo
git lfs track ios-app/Frameworks/*.framework/**/*    # track all frameworks in your project
git add --all                                        # stage
git commit -m "Added files to git lfs"               # commit
git lfs ls-files                                     # check that files are tracked
Run Code Online (Sandbox Code Playgroud)

最终你应该得到下一个结果:

9ee501fdc8 * ios-app/Frameworks/Lottie.framework/Headers/Lottie-Swift.h
8fa3ecc835 * ios-app/Frameworks/Lottie.framework/Info.plist
4a870aa4cc * ios-app/Frameworks/Lottie.framework/Lottie
Run Code Online (Sandbox Code Playgroud)

请注意,这不会将任何预先存在的文件转换为 Git LFS(来自其他分支或之前的提交历史记录)。为此,请使用git lfs migrate命令:

git lfs migrate import --include='ios-app/Frameworks/*.framework/**/*' --everything
Run Code Online (Sandbox Code Playgroud)