Skip to main content

为企业配置 Git 大型文件存储

Git Large File Storage (Git LFS) 是 Git 的开源扩展,使您能够像处理其他文本文件一样处理大文件。

关于 Git Large File Storage

Git Large File Storage (Git LFS) 是 Git 的开源扩展,使您能够像处理其他文本文件一样处理大文件。 您可以将 Git Large File Storage 与单一仓库、所有个人或组织仓库或企业中的每一个仓库结合使用。 您需要先为企业启用 Git LFS,然后才能为特定仓库或组织启用 Git LFS。

默认情况下,Git Large File Storage 客户端将大型资产存储在托管 Git 存储库的同一服务器上。 在 你的 GitHub Enterprise Server 实例 上启用 Git LFS 后,大型资产存储在 /data/user/storage 的数据分区中。

如果在企业或仓库上禁用了 Git LFS,则用户无法将 Git LFS 资产推送到 GitHub Enterprise Server 。

有关详细信息,请参阅“关于 Git Large File Storage”、“管理大型文件”和 Git Large File Storage 项目网站

为企业配置 Git Large File Storage

  1. 在 GitHub Enterprise Server 的右上角,单击你的个人资料照片,然后单击“企业设置”****。

    单击 GitHub Enterprise Server 上的个人资料照片时显示的下拉菜单的屏幕截图。 “企业设置”选项以深橙色边框突出显示。

  2. 在页面左侧的企业帐户边栏中,单击 策略”。

  3. “策略”下,单击“选项”

  4. 在“Git LFS 访问”下,选择下拉菜单,然后单击“已启用”或“已禁用” 。

为各个仓库配置 Git Large File Storage

注意:每个存储库自动从拥有它的组织或用户继承默认设置。 如果仓库所有者已在其所有仓库上强制执行设置,则您不能覆盖默认设置。

  1. 在 GitHub Enterprise Server 上的管理帐户中,在任一页面的右上角,单击
  2. 如果你尚未在“站点管理员”页上,请在左上角单击“站点管理员”。
  3. 在“搜索用户、组织、团队、存储库、Gist 和应用程序”下的文本字段中键入存储库的名称。 然后在字段右侧单击“搜索”。
    “站点管理员”设置的“搜索”页的屏幕截图。 用于搜索存储库的按钮(标记为“搜索”)以橙色轮廓突出显示。
  4. 在“搜索结果 - 存储库”下,单击存储库的名称。
  5. 在页面右上角,单击 “管理员”。
    用户或存储库的“站点管理员”页标题的屏幕截图。 “管理员”选项卡以橙色轮廓突出显示。
  6. 在左侧边栏中,单击“管理员”。
    “站点管理员”页的左侧边栏的屏幕截图。 “管理员”菜单选项以橙色轮廓突出显示。
  7. 在“切换 Git LFS 访问”旁边的“Git LFS”部分中,单击“启用”或“禁用” 。

为用户帐户或组织拥有的每个仓库配置 Git Large File Storage

  1. 在 GitHub Enterprise Server 上的管理帐户中,在任一页面的右上角,单击
  2. 如果你尚未在“站点管理员”页上,请在左上角单击“站点管理员”。
  3. 在“搜索用户、组织、团队、存储库、Gist 和应用程序”下的文本字段中键入用户或组织的名称。 然后在字段右侧单击“搜索”。
    “站点管理员”设置的“搜索”页的屏幕截图。 用于搜索用户和组织的按钮(标记为“搜索”)以橙色轮廓突出显示。
  4. 在搜索结果中,单击用户或组织的名称。
    “帐户”搜索结果的屏幕截图。 在匹配项列表中,“user1”以橙色边框突出显示。
  5. 在页面右上角,单击 “管理员”。
    用户或存储库的“站点管理员”页标题的屏幕截图。 “管理员”选项卡以橙色轮廓突出显示。
  6. 在左侧边栏中,单击“管理员”。
    “站点管理员”页的左侧边栏的屏幕截图。 “管理员”菜单选项以橙色轮廓突出显示。
  7. 在“切换 Git LFS 访问”旁边的“Git LFS”部分中,单击“启用”或“禁用” 。

将 Git Large File Storage 配置为使用第三方服务器

默认情况下,Git Large File Storage 客户端将大型资产存储在托管 Git 存储库的同一服务器上。 在 你的 GitHub Enterprise Server 实例 上启用 Git LFS 后,大型资产存储在 /data/user/storage 的数据分区中。

如果在企业或仓库上禁用了 Git LFS,则用户无法将 Git LFS 资产推送到 GitHub Enterprise Server 。

  1. 在 你的 GitHub Enterprise Server 实例 上禁用 Git LFS。 有关详细信息,请参阅“为你的企业配置 Git Large File Storage”。

  2. 创建指向第三方服务器的 Git LFS 配置文件。

    # Show default configuration
    $ git lfs env
    > git-lfs/1.1.0 (GitHub; darwin amd64; go 1.5.1; git 94d356c)
    > git version 2.7.4 (Apple Git-66)
     
    > Endpoint=https://GITHUB-ENTERPRISE-HOST/path/to/repo/info/lfs (auth=basic)
     
    # Create .lfsconfig that points to third party server.
    $ git config -f .lfsconfig remote.origin.lfsurl https://THIRD-PARTY-LFS-SERVER/path/to/repo
    $ git lfs env
    > git-lfs/1.1.0 (GitHub; darwin amd64; go 1.5.1; git 94d356c)
    > git version 2.7.4 (Apple Git-66)
     
    > Endpoint=https://THIRD-PARTY-LFS-SERVER/path/to/repo/info/lfs (auth=none)
     
    # Show the contents of .lfsconfig
    $ cat .lfsconfig
    [remote "origin"]
    lfsurl = https://THIRD-PARTY-LFS-SERVER/path/to/repo
    
  3. 为使各用户的 Git LFS 配置相同,请向存储库提交自定义 .lfsconfig 文件。

    git add .lfsconfig
    git commit -m "Adding LFS config file"
    
  4. 迁移任何现有的 Git LFS 资源。 有关详细信息,请参阅“迁移到不同的 Git Large File Storage 服务器”。

迁移到其他 Git Large File Storage 服务器

迁移到其他 Git Large File Storage 服务器之前,您必须将 Git LFS 配置为使用第三方服务器。 有关详细信息,请参阅“配置 Git Large File Storage 以使用第三方服务器”。

  1. 使用第二个远端配置仓库。

    $ git remote add NEW-REMOTE https://NEW-REMOTE-HOSTNAME/path/to/repo
     
    $ git lfs env
    > git-lfs/1.1.0 (GitHub; darwin amd64; go 1.5.1; git 94d356c)
    > git version 2.7.4 (Apple Git-66)
     
    > Endpoint=https://GITHUB-ENTERPRISE-HOST/path/to/repo/info/lfs (auth=basic)
    > Endpoint (NEW-REMOTE)=https://NEW-REMOTE-HOSTNAME/path/to/repo/info/lfs (auth=none)
    
  2. 从旧远端提取所有对象。

    $ git lfs fetch origin --all
    > Scanning for all objects ever referenced...
    > ✔ 16 objects found
    > Fetching objects...
    > Git LFS: (16 of 16 files) 48.71 MB / 48.85 MB
    
  3. 将所有对象推送到新远端。

    $ git lfs push NEW-REMOTE --all
    > Scanning for all objects ever referenced...
    > ✔ 16 objects found
    > Pushing objects...
    > Git LFS: (16 of 16 files) 48.00 MB / 48.85 MB, 879.10 KB skipped
    

延伸阅读