通过 git lfs 将数据库文件加入 git 项目管理

文章目录

    之前只是看了 git lfs 的介绍,但是没有上手一试,正好遇到新项目想把测试数据库的数据导出,并存储到 git 项目中,
    方便其他开发环境导入。

    Ubuntu 上安装 git-lfs

    sudo apt install git-lfs
    

    如果未安装,会提示错误。安装引导安装就好。

    > git lfs install
    fatal: 'lfs' appears to be a git command, but we were not
    able to execute it. Maybe git-lfs is broken?
    
    > git-lfs
    Command 'git-lfs' not found, but can be installed with:
    sudo apt install git-lfs
    

    让已有的 git 项目支持 git-lfs

    > git lfs install
    Updated git hooks.
    Git LFS initialized.
    

    install 成功后,仓库的 pre-push 钩子将被替换和生效。

    对大 SQL 文件进行跟踪

    > git lfs track "database/sql/data.sql"
    Tracking "database/sql/data.sql"
    

    status:

    > git status
    On branch master
    Your branch is up to date with 'origin/master'.
    
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
            .gitattributes
            database/sql/data.sql
    

    .gitattributes

    执行完 git lfs track 之后,会发现根目录下多了一个文件 .gitattributes。

    > cat .gitattributes
    database/sql/data.sql filter=lfs diff=lfs merge=lfs -text
    

    查看当前的 lfs 的跟踪规则

    > git lfs track
    Listing tracked patterns
        database/sql/data.sql (.gitattributes)
    Listing excluded patterns
    

    推送到远端仓库

    > git add .gitattributes
    > git add database/sql/data.sql
    > git commit -a
    > git push
    Uploading LFS objects: 100% (1/1), 16 KB | 0 B/s, done.                                                                                                                                     Enumerating objects: 9, done.
    Counting objects: 100% (9/9), done.
    Delta compression using up to 12 threads
    Compressing objects: 100% (5/5), done.
    Writing objects: 100% (6/6), 581 bytes | 581.00 KiB/s, done.
    Total 6 (delta 2), reused 0 (delta 0)
    To codeup.aliyun.com:xxx/example.git
       9499383..e3149b8  master -> master
    

    阿里云效 codeup 中查看

    可以看到对应的文件被加上了 Git LFS 标签。

    同时可以查看所有的大文件,及当前空间使用情况。

    Git LFS

    Makefile

    可以在 Makefile 中添加一行命令自动执行 mysqldump,可以方便的随时导出数据库。

    git lfs 版本过低问题

    如果在 git push 时提示 git lfs 版本过低,可以通过以下方式升级:

    curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
    sudo apt-get install git-lfs
    git lfs install
    

    Could not resolve host: d28dx6y1hfq314.cloudfront.net

    如果使用上面方法升级 git lfs 版本失败,报错:

    Importing packagecloud gpg key… curl: (6) Could not resolve host: d28dx6y1hfq314.cloudfront.net

    可以去 github 下载最新版本的 lfs:

    https://github.com/git-lfs/git-lfs/releases

    例如,我在 ubuntu 18.04 上可以下载 debian 10 对应的 .deb 安装包。

    下载完成后,执行命令:

    sudo dpkg -i git-lfs_3.2.0_amd64.deb
    

    即可安装。

    参考

    https://help.aliyun.com/document_detail/206889.html

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式