带分支的 Git LFS 的工作流程是什么?

voi*_*ter 6 git bitbucket git-lfs

我已将 Git LFS 引入到我在 bitbucket.org 上的一个存储库中。分叉此存储库的用户无法推送到他们的分叉,因为那里没有空间可容纳 LFS 文件。我的理解是,当您在那里分叉存储库时,LFS 文件不会被复制。

将 Git LFS 与 Bitbucket 结合使用是否意味着分叉不可能或至少可用?或者 Git 是否有特殊的工作流程/配置可以在这里提供帮助?

请注意,就我而言,我使用分叉主要是为了将上游工作持久化,但团队其他成员尚未准备好看到这些工作。例如,我会将未完成的工作推到那里,以便我可以在不同的物理位置继续进行。完成后,我会将我的作品发布给origin团队的其他成员查看。

Pat*_*uri 9

这是一个已知问题,请参阅Git LFS 与 Bitbucket 的当前限制。我也希望 Bitbucket(和 Github!)能够改进这一点。

结果:

  • LFS 文件必须在 fork 和上游存储库之间手动同步
  • 分叉还将使用大量的大文件存储空间,而不仅仅是上游(有一个免费的存储配额 - 但在用完之后,你将不得不为每个分叉付费,哎呀!
  • 要将 LFS 文件从分支复制回上游,您需要对上游存储库进行写访问,或者上游所有者必须自己执行此操作

如何同步 LFS 文件:

  1. 第一次克隆 fork 存储库 - 它还没有复制任何 LFS 文件,因此您必须在没有 LFS 文件的情况下克隆它(否则克隆将失败)
export GIT_LFS_SKIP_SMUDGE=y
git clone <address of your fork>
Run Code Online (Sandbox Code Playgroud)
  1. 同步上游 -> fork(将 LFS 文件复制到您的 fork) -最初和每次 git fetch 上游时
git lfs fetch --all <upstream>
git lfs push --all <fork>
Run Code Online (Sandbox Code Playgroud)
  1. 同步 fork -> 上游(仅当前分支) -每次合并 PR 后
git lfs fetch <fork>
git lfs push <upstream>
Run Code Online (Sandbox Code Playgroud)

如果有比这更好的工作流程,请告诉我。这是 Bitbucket LFS 处理的严重限制。