Azure DevOps抛出错误:pathspec 'master'与git已知的任何文件不匹配

xdyibdwo  于 2023-04-19  发布在  Git
关注(0)|答案(4)|浏览(144)

我们有大约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)也不起作用
  • 切换分支没有帮助

还有其他想法吗

szqfcxe2

szqfcxe21#

我会检查这个管道:

  • git version
  • git branch -avv
  • git switch $(Build.SourceBranchName)

最后一个命令(git switch)将避免 checkout 一个分支(也可能是一个文件名)的任何问题。

kxkpmulp

kxkpmulp2#

我在一个新创建的仓库/项目中遇到了同样的问题。我有一个脚本正在更新一个angular应用程序的包版本。在Spring的某个时候创建了一个仓库。它用真实的的分支名称 checkout 代码,然后在一个分支上创建哈希。

* [new branch]      main       -> origin/main
git --config-env=http.extraheader=env_var_http.extraheader fetch --force --tags --prune --prune-tags --progress --no-recurse-submodules origin  +67169f67e1151398ee1c86c939f9aea8daad0a46
From https://xxx.visualstudio.com/xxx/_git/xxx
 * branch            67169f67e1151398ee1c86c939f9aea8daad0a46 -> FETCH_HEAD
git checkout --progress --force 67169f67e1151398ee1c86c939f9aea8daad0a46
Note: switching to '67169f67e1151398ee1c86c939f9aea8daad0a46

这样就可以使用$Env:BUILD_SOURCEBRANCH和$Env:BUILD_SOURCEBRANCHNAME

Write-Host "upgrade version"
npm version patch -m "Upgrade to %s ***NO_CI***"
Write-Host "Create temp branch"
git branch tmp
Write-Host "Checkout $SourceBranchPath"
git checkout $Env:BUILD_SOURCEBRANCHNAME -q
Write-Host "Merge tmp to $Env:BUILD_SOURCEBRANCHNAME"
git merge tmp
Write-Host "Update status"
git status
Write-Host "Push changes to origin"
git push origin $Env:BUILD_SOURCEBRANCHNAME -q
Write-Host "Delete tmp branch"
git branch -d tmp -q

但是现在有了新的回购,它在更多的地方使用哈希。

* [new ref]         8c41292bd04b87275886d7d012c022273ce83f34 -> origin/8c41292bd04b87275886d7d012c022273ce83f34
git --config-env=http.extraheader=env_var_http.extraheader fetch --force --tags --prune --prune-tags --progress --no-recurse-submodules origin --depth=1 +8c41292bd04b87275886d7d012c022273ce83f34   
From https://xxx.visualstudio.com/xxx/_git/xxx
 * branch            8c41292bd04b87275886d7d012c022273ce83f34 -> FETCH_HEAD
git checkout --progress --force refs/remotes/origin/8c41292bd04b87275886d7d012c022273ce83f34
Note: switching to 'refs/remotes/origin/8c41292bd04b87275886d7d012c022273ce83f34'

我可以通过使用$Env:BUILD_SOURCEVERSION进行结帐来摆脱error: pathspec

git checkout $Env:BUILD_SOURCEVERSION -q

但是$Env:BUILD_SOURCEVERSION$Env:BUILD_SOURCEBRANCHNAME都不适合最后的推送。我得到:

src refspec main does not match any
error: failed to push some refs to 'xxxx'
guz6ccqo

guz6ccqo3#

同时我让它工作。
由于它似乎知道当前运行的分支,因此必须使用
git checkout -b $Env:BUILD_SOURCEBRANCHNAME〈--B
稍后要回推更改,必须使用
git push origin HEAD:$Env:BUILD_SOURCEBRANCHNAME〈-HEAD:

nlejzf6q

nlejzf6q4#

我在一个新的仓库中遇到了同样的问题,而同一个脚本在同一个devops项目的一个旧仓库中工作。不知道为什么。
对我来说,解决方案是在 checkout 之前运行git fetch

相关问题