如何使用Azure DevOps REST API将Git仓库复制到其他项目
实现Azure DevOps Git仓库跨项目复制(REST API方案)
核心步骤
Azure DevOps REST API没有直接的“一键复制仓库内容”接口,但可以通过创建目标仓库 + 导入原始仓库内容的组合方式实现,具体步骤如下:
1. 创建目标项目下的空Git仓库
先用REST API在目标项目中创建一个空仓库,请求示例:
- 请求方法:
POST - 请求URL:
https://dev.azure.com/{组织名}/{目标项目名}/_apis/git/repositories?api-version=7.1-preview.1 - 请求体(JSON):
{ "name": "目标仓库名", "project": { "id": "目标项目ID" }, "defaultBranch": "main" }
执行后会返回新仓库的详细信息,包括仓库ID和克隆地址,保存这些信息备用。
2. 通过Import API导入原始仓库内容
使用Azure DevOps的仓库导入API,将原始仓库的内容同步到新创建的空仓库中,请求示例:
- 请求方法:
POST - 请求URL:
https://dev.azure.com/{组织名}/{目标项目名}/_apis/git/repositories/{目标仓库ID}/importRequests?api-version=7.1-preview.1 - 请求体(JSON):
{ "parameters": { "gitSource": { "url": "原始仓库的HTTPS克隆地址", "overwrite": true, "deleteServiceEndpointAfterImportIsDone": true }, "serviceEndpointId": null, "gitDestination": { "name": "目标仓库名" } } }
注意:如果原始仓库是私有仓库,需要在
gitSource中添加credentials字段,填入有权限访问原始仓库的用户名和PAT(个人访问令牌):"credentials": { "username": "你的用户名", "password": "你的PAT令牌" }
3. 验证导入状态
可以通过GET请求查询导入任务的状态,确保内容复制完成:
- 请求方法:
GET - 请求URL:
https://dev.azure.com/{组织名}/{目标项目名}/_apis/git/repositories/{目标仓库ID}/importRequests/{导入请求ID}?api-version=7.1-preview.1
补充说明
- 确保使用的PAT拥有代码读写权限(对原始仓库和目标项目都需要)
- 如果需要定期复制,可以将上述步骤封装成脚本,结合定时任务执行
- 也可以结合Git命令实现:先克隆原始仓库,添加目标仓库作为远程,然后推送所有分支和标签,这种方式适合简单场景,但REST API方式更适合自动化集成
内容的提问来源于stack exchange,提问作者One Developer
相关产品推荐
相关产品推荐

