我们有一个存储库大小相当大的GitHub存储库,因为我们在历史记录中有几个20mb以上的框架二进制文件。这会严重影响CI时间,因为我们正在使用托管CI,这会为每个作业获取存储库的新克隆。
为了改善这一点,我想重写历史记录并将大文件移动到Git LFS。
我试图将git lfs migrate import
用于此目的。
作为准备步骤,我已在本地跟踪所有远程分支机构,因此--everything
确实会重写所有内容,而团队中的其他开发人员也不必注意它,但是可以得到一个新的克隆。
当我重写GitHub托管的存储库的历史时,我是否需要重写并强制推送GitHub似乎用来跟踪拉取请求(refs/pull/*
)的引用?
git lfs migrate import
并未包括那些我认为的内容。
答案 0 :(得分:2)
我是否需要重写并强制推送GitHub似乎用来跟踪拉取请求(refs / pull / *)的引用?
如果您确实需要,这将是一个问题,因为这些引用是只读的according to Github's documentation:
远程refs / pull / namespace是只读的。如果你试图在那里推送任何提交,你会看到这个错误:
! [远程拒绝] HEAD - > refs / pull / 1 / head(拒绝更新隐藏的参考号) 错误:未能将某些引用推送到' git@github.local:USERNAME / REPOSITORY.git'
幸运的是,这不是一个问题,因为Pull Request要求合并的原始分支的任何推送都将update the Pull Request:
一旦您创建了拉取请求,您就可以从主题分支推送提交,将其添加到现有的拉取请求中。这些提交将在您的拉取请求中按时间顺序显示,并且更改将在"文件已更改"中显示。标签
虽然该文档中没有明确说明,但包括强制推送到分支--Github将检测到分支已指向新提交,并使用新版本更新Pull Request。