Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure DevOps Rest API从特定分支创建分支_Azure_Azure Devops_Azure Devops Rest Api - Fatal编程技术网

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

Azure DevOps Rest API从特定分支创建分支,azure,azure-devops,azure-devops-rest-api,Azure,Azure Devops,Azure Devops Rest Api,我正在寻找Azure DevOps Rest API,以从现有分支创建新分支。 请参阅“初始提交”一节 请参阅“初始提交”一节 Azure DevOps Rest API从特定分支创建分支 Konteks指出了正确的RESTAPI 我们可以使用创建分支,但是如果您想从特定分支创建分支,我们需要修改请求正文 POST https://dev.azure.com/fabrikam/_apis/git/repositories/{repositoryId}/pushes?api-version=5.1

我正在寻找Azure DevOps Rest API,以从现有分支创建新分支。

请参阅“初始提交”一节

请参阅“初始提交”一节

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

Konteks指出了正确的RESTAPI

我们可以使用创建分支,但是如果您想从特定分支创建分支,我们需要修改请求正文

POST https://dev.azure.com/fabrikam/_apis/git/repositories/{repositoryId}/pushes?api-version=5.1
首先,我们需要使用RESTAPI获取
repositoryId

GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories?api-version=4.1
然后使用REST API和
过滤器=
获取特定分支的
oldObjectId

GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/refs?filter=heads/master&api-version=5.1
现在,我们可以使用RESTAPI
存储库-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"
          }
        }
      ]
    }
  ]
}
{
“重新更新”:[
{
“名称”:“参考文件/标题/”,
“oldObjectId”:”
}
],
“承诺”:[
{
“注释”:“初始提交”,
“变化”:[
{
“变更类型”:“添加”,
“项目”:{
“路径”:“/readme111.md”
},
“新内容”:{
“内容”:“我的第一个文件!”,
“内容类型”:“原始文本”
}
}
]
}
]
}
邮递员的调查结果:

这是我的测试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
$connectionToken=“”
$base64AuthInfo=[System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(“:$($connectionToken)”)
$headers=@{Authorization=“Bearer$env:SYSTEM_ACCESSTOKEN”}
$url=”https://dev.azure.com///_apis/git/repositories//pushes?api-版本=5.1“
$body=@“
{
“重新更新”:[
{
“名称”:“refs/heads/Test228”,
“旧对象ID”:“A57F0C34F8EC7330BDC37E7631F7BE3C3EA3956”
}
],
“承诺”:[
{
“注释”:“初始提交”,
“变化”:[
{
“变更类型”:“添加”,
“项目”:{
“路径”:“/readme111.md”
},
“新内容”:{
“内容”:“我的第一个文件!”,
“内容类型”:“原始文本”
}
}
]
}
]
}
"@
写入主机“$url”
$response=Invoke RestMethod-Uri$url-ContentType“application/json patch+json”-Body$Body-headers@{authorization=“Basic$base64AuthInfo”}-Method POST
希望这有帮助

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

Konteks指出了正确的RESTAPI

我们可以使用创建分支,但是如果您想从特定分支创建分支,我们需要修改请求正文

POST https://dev.azure.com/fabrikam/_apis/git/repositories/{repositoryId}/pushes?api-version=5.1
首先,我们需要使用RESTAPI获取
repositoryId

GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories?api-version=4.1
然后使用REST API和
过滤器=
获取特定分支的
oldObjectId

GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/refs?filter=heads/master&api-version=5.1
现在,我们可以使用RESTAPI
存储库-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"
          }
        }
      ]
    }
  ]
}
{
“重新更新”:[
{
“名称”:“参考文件/标题/”,
“oldObjectId”:”
}
],
“承诺”:[
{
“注释”:“初始提交”,
“变化”:[
{
“变更类型”:“添加”,
“项目”:{
“路径”:“/readme111.md”
},
“新内容”:{
“内容”:“我的第一个文件!”,
“内容类型”:“原始文本”
}
}
]
}
]
}
邮递员的调查结果:

这是我的测试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
$connectionToken=“”
$base64AuthInfo=[System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(“:$($connectionToken)”)
$headers=@{Authorization=“Bearer$env:SYSTEM_ACCESSTOKEN”}
$url=”https://dev.azure.com///_apis/git/repositories//pushes?api-版本=5.1“
$body=@“
{
“重新更新”:[
{
“名称”:“refs/heads/Test228”,
“旧对象ID”:“A57F0C34F8EC7330BDC37E7631F7BE3C3EA3956”
}
],
“承诺”:[
{
“注释”:“初始提交”,
“变化”:[
{
“变更类型”:“添加”,
“项目”:{
“路径”:“/readme111.md”
},
“新内容”:{
“内容”:“我的第一个文件!”,
“内容类型”:“原始文本”
}
}
]
}
]
}
"@
写入主机“$url”
$response=Invoke RestMethod-Uri$url-ContentType“application/json patch+json”-Body$Body-headers@{authorization=“Basic$base64AuthInfo”}-Method POST
希望这能有所帮助。

这对我来说很有用:

要创建/更新/删除,请执行以下操作:

要获取objectId,请执行以下操作: 这对我很有效:

要创建/更新/删除,请执行以下操作:

要获取objectId,请执行以下操作:
Sparrow插件可以满足您的需要(使用Rest API):

请注意,它不会为此创建任何虚拟文件,它仅通过其内部对象ID引用现有分支

请随意静止;-))



PS披露。我是该工具的作者,更多详细信息可以在这里找到-

Sparrow插件满足您的需要(使用Rest API):

请注意,它不会为此创建任何虚拟文件,它仅通过其内部对象ID引用现有分支

请随意静止;-))



PS披露。我是工具的作者,更多细节可以在这里找到-

我捕获了AzureDevOps web UI创建的请求,并发现从特定分支创建分支对于REST api来说是一项非常简单的任务

$repository=“repositoryName”
$newBranch=“newBranchName”
$baseBranch=“baseBranchName”
$organization=“organizationName”
$project=“projectName”
$pat=“personalAccessToken”
$base64AuthInfo=[System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(“:$pat”))
$headers=@{Authorization=“Basic$base64AuthInfo”}
#获取基分支的ID
$url=”https://dev.azure.com/美元或