当前位置: 首页 > 知识库问答 >
问题:

Azure DevOps Rest API从特定分支创建分支

贺靖
2023-03-14

我正在寻找一个Azure DevOps Rest API来从现有的分支创建一个新的分支。

共有1个答案

宫晟
2023-03-14

Azure DevOps Rest API从特定分支创建分支

Konteks指出了正确的REST API。

我们可以使用初始提交(创建一个新的分支)来创建一个分支,但是如果您想从一个特定的分支创建一个分支,我们需要修改请求体。

POST https://dev.azure.com/fabrikam/_apis/git/repositories/{repositoryId}/pushes?api-version=5.1

首先,我们需要使用REST API repositories-list获得repositoryID

GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories?api-version=4.1

然后,使用带有filter= 的REST API refs-list,获取特定分支的oldObjectId:

GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/refs?filter=heads/master&api-version=5.1

现在,我们可以使用REST APIrepositories-list和以下请求体,从特定分支创建一个新分支:

{
  "refUpdates": [
    {
      "name": "refs/heads/<DefineYourNewBranchName>",
      "oldObjectId": "<oldObjectId we get from above REST API>"
    }
  ],
  "commits": [
    {
      "comment": "Initial commit.",
      "changes": [
        {
          "changeType": "add",
          "item": {
            "path": "/readme111.md"
          },
          "newContent": {
            "content": "My first file!",
            "contentType": "rawtext"
          }
        }
      ]
    }
  ]
}

邮递员的结果:

这是我的测试powershell脚本:

$connectionToken="<PAT Here>"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))

$headers = @{ Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN" }

$url= "https://dev.azure.com/<Organizationname>/<ProjectName>/_apis/git/repositories/<repositoryId>/pushes?api-version=5.1"


$body =@"
{
  "refUpdates": [
    {
      "name": "refs/heads/Test228",
      "oldObjectId": "a57f0c34f8ec7330bdc37e7631f7be3cc3ea3956"
    }
  ],
  "commits": [
    {
      "comment": "Initial commit.",
      "changes": [
        {
          "changeType": "add",
          "item": {
            "path": "/readme111.md"
          },
          "newContent": {
            "content": "My first file!",
            "contentType": "rawtext"
          }
        }
      ]
    }
  ]
}
"@


Write-Host "$url"
$response= Invoke-RestMethod -Uri $url -ContentType "application/json-patch+json" -Body $body -headers @{authorization = "Basic $base64AuthInfo"} -Method POST

希望这有帮助。

 类似资料:
  • 我想在我的项目中使用npm从github安装引导加载程序 目前,他们正在维护该项目的两个版本,可与webpack版本1和2兼容。 我想安装版本1。我应该使用什么npm命令来安装这个? 我尝试使用下面的一个,但它不工作。

  • 在偶尔的情况下,你可能会想要保留那些与你的代码没有共同祖先的分支。例如在这些分支上保留生成的文档或者其他一些东西。如果你需要创建一个不使用当前代码库作为父提交的分支,你可以用如下的方法创建一个空分支: git symbolic-ref HEAD refs/heads/newbranch rm .git/index git clean -fdx <do work> git add your

  • 本文向大家介绍Git 创建分支提交远程分支详解,包括了Git 创建分支提交远程分支详解的使用技巧和注意事项,需要的朋友参考一下 Git 创建分支提交远程分支详解 1.创建本地分支 git branch 分支名,例如:git branch 2.0.1.20120806 注:2.0.1.20120806是分支名称,可以随便定义。 2.切换本地分支 git checkout 分支名,例如从master切

  • 我在 RubyMine 中有一个启用了 Git 集成的 Ruby 项目。我想创建一个新分支。帮助文件告诉我打开分支菜单并选择“新建分支”。但是当我按照步骤打开分支菜单时,我得到一个小框,标题为“Git 分支”,文本“这里什么都没有”,在底部的框架中它说“当前分支:主”(嗯,这至少是有道理的)。没有菜单项,也没有“新分支选项”。此外,帮助说,打开版本控制窗口会更容易,但在“视图”菜单上禁用。 那么如

  • 创建名为issue1的分支。 您可以通过branch命令来创建分支。 $ git branch <branchname> 创建名为issue1的分支。 $ git branch issue1 不指定参数直接执行branch命令的话,可以显示分支列表。 前面有*的就是现在的分支。 $ git branch issue1 * master 目前的历史记录是这样的。

  • 让我们来看一个简单的分支新建与分支合并的例子,实际工作中你可能会用到类似的工作流。 你将经历如下步骤: 开发某个网站。 为实现某个新的需求,创建一个分支。 在这个分支上开展工作。 正在此时,你突然接到一个电话说有个很严重的问题需要紧急修补。 你将按照如下方式来处理: 切换到你的线上分支(production branch)。 为这个紧急任务新建一个分支,并在其中修复它。 在测试通过之后,切换回线上