Bash 如何在将功能分支合并到主功能之后向开发人员提供建议,以启用git LFS(git)

Bash 如何在将功能分支合并到主功能之后向开发人员提供建议,以启用git LFS(git),bash,git,version-control,git-bash,git-lfs,Bash,Git,Version Control,Git Bash,Git Lfs,详细信息: 我们正在尝试将我们的回购协议迁移到git LFS 我有一个分支将启用git lfs,我正在做的是更新一个.gittributes文件,并创建一个跟踪器,跟踪器反过来创建指针来跟踪所有需要成为lfs一部分的文件 现在,我必须告诉开发人员,一旦这个特性分支被合并到默认/主功能中,他们需要做什么 我需要理解的问题? 现在,我的建议和发现是,在更新到master/default之前,也就是说,重新调整到master/default,我告诉他们对他们拥有的所有特性分支执行以下操作,显然到

详细信息

  • 我们正在尝试将我们的回购协议迁移到git LFS
  • 我有一个分支将启用git lfs,我正在做的是更新一个.gittributes文件,并创建一个跟踪器,跟踪器反过来创建指针来跟踪所有需要成为lfs一部分的文件
  • 现在,我必须告诉开发人员,一旦这个特性分支被合并到默认/主功能中,他们需要做什么
我需要理解的问题?

  • 现在,我的建议和发现是,在更新到master/default之前,也就是说,重新调整到master/default,我告诉他们对他们拥有的所有特性分支执行以下操作,显然到目前为止,这些分支中没有git lfs更改
  • 现在对于开发人员来说,这将是一个手动步骤,他们不知何故希望这对他们来说是自动化的,我假设这可以通过git钩子或其他方式来完成,这样他们就不必更新每个分支 我正在考虑这样一个管道bash命令是否可以做到这一点?这是否可行
分支的
单位为$(每个ref的git--format='%(refname)'refs/heads/);做
git lfs安装“$branch”;
完成
更新1

  • 似乎上面的操作确实在本地历史记录中的所有分支上安装了
    git lfs
    ,并且一次性完成
  • 但我仍然想知道和理解什么是最佳实践

应该不需要在所有分支中运行
git lfs install
——一旦您在回购中安装了
install
,它将为该回购永久设置。从帮助中:

$git lfs安装--帮助
git lfs安装[选项]
执行以下操作以确保正确设置Git LFS:
*在全局Git中以“lfs”的名称设置清理和污迹过滤器
配置。
*安装一个预推钩子,为当前存储库运行git lfs预推,
如果从里面跑。如果在任何Git中配置了“core.hooksPath”
配置(并受支持,即安装的Git版本至少为
2.9.0),则预推挂钩将安装到该目录。
钩子存储在
.git
文件夹中,因此在签出其他分支时不会受到影响


现在,正如您所知道的,如果人们的分支比您合并的新
.gittributes
文件旧,那么他们需要重新设置这些分支的基础,以获取更改,并确保正确的文件被视为LFS文件。但这与git lfs安装无关

好的,让我问你这个问题,如果我不清楚,请告诉我。-让我们不要担心
.gittributes
,它将随
rebase
而来-开发人员肯定会有许多他们正在研究的分支,这些分支中不会有
.git
用于
lfs
的钩子,除非并且直到他在根目录中安装
git lfs
,你的意思是说-如果他们在任何一个分支中安装了
git lfs
,那么默认情况下,
.git
对所有分支都有效吗?如果上面的答案是肯定的,那就太好了,他们只做一次,所有
旧的
分支中都会有
lfs.git/hooks
。@SandePand:谈论
.git
文件夹在分支中或“为所有分支持久化”是没有意义的,因为
.git
文件夹本身就是存储库。存储库包含所有分支的主副本,当您签出时,相应的文件将从存储库(
.git
文件夹)复制到工作文件夹(通常是
.git
文件夹的父目录)中。因此,当您在
.git/hooks
中放置钩子时,例如使用
git lfs install
,无论您在哪个分支上,它们都是同样可访问的。听起来不错,那么我认为我们是好的。我不认为需要在所有分支上运行
gitlfs install
,在任何分支上运行一次都很好。
brew install git-lfs (this will be system-wide)
git lfs install (this will be on the root directory of the repo, for each branch)