我们有大约100个正在运行的azure-devop管道,它们都具有相同的azure-pipeline. yaml。在所有管道中,我们调用get checkout $(Build.SourceBranchName)
。在其中一个存储库中,我们得到错误消息:
error: pathspec 'master' did not match any file(s) known to git
在我们的本地机器上, checkout master分支不会产生任何问题。当推送到任何其他分支时,它也不会工作。例如,当使用dev分支时:
error: pathspec 'dev' did not match any file(s) known to git
我看不出有什么不同。我试过:
- 从零开始创造一切
- 检查HEAD ref是否等于master(origin/master)
- 创建新分支并推送它们(例如origin/dev)也不起作用
- 切换分支没有帮助
还有其他想法吗
4条答案
按热度按时间szqfcxe21#
我会检查这个管道:
git version
git branch -avv
git switch $(Build.SourceBranchName)
最后一个命令(
git switch
)将避免 checkout 一个分支(也可能是一个文件名)的任何问题。kxkpmulp2#
我在一个新创建的仓库/项目中遇到了同样的问题。我有一个脚本正在更新一个angular应用程序的包版本。在Spring的某个时候创建了一个仓库。它用真实的的分支名称 checkout 代码,然后在一个分支上创建哈希。
这样就可以使用$Env:BUILD_SOURCEBRANCH和$Env:BUILD_SOURCEBRANCHNAME
但是现在有了新的回购,它在更多的地方使用哈希。
我可以通过使用
$Env:BUILD_SOURCEVERSION
进行结帐来摆脱error: pathspec
。但是
$Env:BUILD_SOURCEVERSION
和$Env:BUILD_SOURCEBRANCHNAME
都不适合最后的推送。我得到:guz6ccqo3#
同时我让它工作。
由于它似乎知道当前运行的分支,因此必须使用
git checkout -b $Env:BUILD_SOURCEBRANCHNAME
〈--B稍后要回推更改,必须使用
git push origin HEAD:$Env:BUILD_SOURCEBRANCHNAME
〈-HEAD:nlejzf6q4#
我在一个新的仓库中遇到了同样的问题,而同一个脚本在同一个devops项目的一个旧仓库中工作。不知道为什么。
对我来说,解决方案是在 checkout 之前运行
git fetch
。