作为构建过程的一部分,我们更新版本号,并且要提交并将更改推回主存储库。这是托管在azure devops上的git repo,第一步是使用get source:
我使用以下代码在管道的末尾添加了命令行任务。似乎出了点问题,我该怎么做呢?谢谢。
git config --global user.email "my@email.address.com"
git config --global user.name "VSTS Admin"
git status
ECHO SOURCE BRANCH IS %BUILD_SOURCEBRANCH%
ECHO ADDING MODIFIED FILES
git add *.cs
git add *.build
git add *.wxs
ECHO CREATING COMMIT
git commit -m "Update version numbers for Build %BUILD_BUILDNUMBER%"
git push origin master
结果如下:
##[section]Starting: Commit/Push Changes To Git Repo
==============================================================================
Task : Command Line
Description : Run a command line script using cmd.exe on Windows and bash on macOS and Linux.
Version : 2.148.0
Author : Microsoft Corporation
Help : [More Information](https://go.microsoft.com/fwlink/?LinkID=613735)
==============================================================================
Generating script.
========================== Starting Command Output ===========================
##[command]"C:\windows\system32\cmd.exe" /D /E:ON /V:OFF /S /C "CALL "D:\a\_temp\8b19361b-8f47-4d31-834d-132fedb0b386.cmd""
HEAD detached at e7a1479d
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: ../../../Properties/AssemblyInfo.cs
.. (more files modified)
SOURCE BRANCH IS refs/heads/master
ADDING MODIFIED FILES
CREATING COMMIT
[detached HEAD 5c1bf6dc] Update version numbers for Build myBuildNumber_5.1.001
2 files changed, 2 insertions(+), 2 deletions(-)
error: src refspec master does not match any
error: failed to push some refs to 'https://{org}@dev.azure.com/{projectName}/_git/{reponame}'
##[error]Cmd.exe exited with code '1'.
##[section]Finishing: Commit/Push Changes To Git Repo
答案 0 :(得分:0)
“ src refspec master does not match any
”表示re不是要推送的本地主分支。
那是因为提交是在独立的HEAD(没有分支)中创建的
添加和提交之前,必须先使用git checkout -b master
创建master分支。
更准确地说,如I mentioned here:
git checkout master 2>/dev/null || git checkout -b master;
在上一步获得源代码后,便签出了与主服务器(
git checkout --progress --force e7a1479dc5d2139be5247a027721e2a88b44a890
)不同的分支
根据定义,提交的检出直接在独立的HEAD中进行。
答案 1 :(得分:0)
错误:src refspec主服务器与任何主机都不匹配
错误:无法将一些引用推送到 'https:// {org} @ dev.azure.com / {projectName} / _git / {reponame}'
首先让我们假设您操作的仓库是A,而您要推送到的仓库是B。 出现此错误的原因是因为您的A和B存储库不同步。在推送A分支之前,必须确保B分支已同步,因此您应先将B分支拉到A上,然后再推送A分支,或尝试另一种方式:创建一个新的存储库(不生成新的提交) ),然后将A分支推送到新的存储库。
git cherry-pick <commitHash>
答案 2 :(得分:0)
需要注意的是:
git checkout <commit-hash-SHA1>
git push <remote-repo-url> HEAD:refs/heads/<target-branch>
可以是起源或完全限定的 repo-url git push url_with_pat HEAD:refs/heads/<target-branch>
(网址也可以包含PAT(Github的个人访问令牌-具有对目标存储库的写访问权限),格式为:https://<username>:<PAT>@github.com/<username>/<repo>.git
environment variable $(Build.SourceBranch)
中的format /refs/head/<branch>
,因为它处于分离状态模式(uses refs-heads
)如果您出于某种原因不尝试签出分支机构,则此功能特别有用
如果不需要上述方法,那么仍然可以使用经典的git checkout -b <branch>
注意:可以用修剪后的$(Build.SourceBranch)代替,其中可以删除前缀/refs/heads/
,然后再使用