Go语言 如何使用Github API V3执行从一个存储库到另一个存储库的强制推送?

xzlaal3s  于 2023-08-01  发布在  Go
关注(0)|答案(1)|浏览(115)

我正在做一个使用github的服务。对于一个函数,我需要强制将所有内容从Repo 1推送到Repo 2。

  • 不要关心Repo 2的任何内容、树、提交历史等。它将被替换。

最终目标是Repo 2最终与Repo 1相同。相同的内容、提交历史等。
我为这两个帐户授权,所以这不是问题。
看看可用的端点,我有点困惑,如何从高层次上做到这一点。
我认为这将是从Repo 1中提取整个树和所有blob,并使用update-refs将Repo 2设置为与之相等?我不知道该怎么办。
到目前为止,我已经能够成功地从Repo 1拉取所有文件,创建一个提交,并使用API将其推送到Repo 2。然而,我不知道如何“强制推送”,使回购2有相同的历史/内容/等。作为回购1。

snvhrwxg

snvhrwxg1#

你不能使用GitHub API来实现这一点,因为GitHub API不提供处理大量Git数据或将Git数据从一个存储库传输到另一个存储库的方法。
您需要使用git clone --mirror克隆原始存储库,删除refs/pull下的所有引用,然后推送到新存储库。使用Git是解决这个问题最简单、最容易的方法,也是生成相同历史的唯一方法。

相关问题