You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过GitHub API V3将一个仓库强制推送到另一个仓库?

用GitHub API完全替换Repo2为Repo1的内容与提交历史

核心方案

直接将Repo1目标分支的提交哈希强制设置到Repo2的对应分支上,这是最高效的实现方式——无需重新生成文件、提交或树结构,GitHub会自动处理跨仓库的对象同步。

具体步骤

1. 获取Repo1目标分支的提交哈希

调用分支信息接口,拿到Repo1目标分支(比如main)当前指向的提交SHA:

GET /repos/{owner1}/{repo1}/branches/{branch}

从返回结果中提取commit.sha字段的值。

2. 强制更新Repo2的分支引用

调用更新引用接口,添加force=true参数实现强制覆盖:

PATCH /repos/{owner2}/{repo2}/git/refs/heads/{branch}

请求体结构如下:

{
  "sha": "步骤1获取的Repo1提交SHA",
  "force": true
}

执行后,Repo2的目标分支会直接指向Repo1的那个提交,完全覆盖原有内容、提交历史,和Repo1状态完全一致。

3. 同步多分支(可选)

如果需要同步Repo1的多个分支,对每个分支重复上述两步即可。

方案优势

  • 无需遍历文件、创建Blobs/Tree,减少API调用量,效率更高
  • 完整保留Repo1的提交历史,不会生成新的提交记录
  • 利用GitHub内部机制处理对象同步,避免手动复制内容的繁琐

注意事项

  • 确保授权Token拥有两个仓库的写入权限
  • 操作前确认Repo2原有内容无保留价值,强制更新后无备份无法恢复

内容的提问来源于stack exchange,提问作者Jacob Wartofsky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 00:02:46