代码之家  ›  专栏  ›  技术社区  ›  marius

在尝试优化GitHub托管的存储库时,我需要重写哪些引用?

  •  1
  • marius  · 技术社区  · 7 年前

    出身背景

    我们有一个具有相当大存储库大小的GitHub存储库,因为历史上有几个超过20mb的框架二进制文件。这会严重影响CI,因为我们使用托管CI,它会为每个作业获取存储库的新克隆。

    为了改进这一点,我想重写历史并将大型文件移动到Git LFS。

    问题

    我想用 git lfs migrate import 为此目的。

    作为准备步骤,我在本地跟踪了所有远程分支,以便 --everything 真的要重写一切,团队中的其他开发人员不必担心,只需获得一个新的克隆即可。

    当我重写GitHub托管的存储库的历史记录时,是否需要重写并强制推送GitHub似乎用来跟踪拉取请求的引用( refs/pull/* )还有吗? git lfs迁移导入 据我所知,还没有包括这些。

    1 回复  |  直到 7 年前
        1
  •  2
  •   IMSoP    7 年前

    我是否也需要重写和强制推送GitHub用来跟踪拉请求(refs/pull/*)的引用?

    如果确实需要,这将是一个问题,因为这些引用是只读的 according to Github's documentation :

    远程引用/拉/命名空间为只读。如果尝试在此处推送任何提交,您将看到以下错误:

    哦![远程拒绝]标头->refs/pull/1/head(拒绝更新隐藏的ref) 错误:无法将某些引用推送到'git@github.local:用户名/存储库。git'

    幸运的是,这不是一个问题,因为Pull请求请求合并的原始分支的任何推送都将 update the Pull Request :

    创建拉请求后,可以从主题分支推送提交,将其添加到现有的拉请求中。这些提交将按时间顺序出现在拉取请求中,更改将显示在“文件已更改”选项卡中。

    虽然文档中没有明确说明,但这包括强制推送到分支-Github将检测到分支已指向新提交,并用新版本更新Pull请求。