为什么使用github cli api阅读pull request数据会导致“gh:从git-bash终端运行时出现“Not Found(HTTP 404)”错误?

ozxc1zmp  于 2023-08-01  发布在  Git
关注(0)|答案(3)|浏览(126)

当使用github cli API通过git-bash终端读取pull request数据时,我得到“gh:HTTP 404错误提示当我通过PowerShell终端或通过wsl运行完全相同的脚本时,它工作得很好。知道为什么会这样吗
x1c 0d1x的数据

q3qa4bjr

q3qa4bjr1#

虽然REST API中的gh代码示例确实有一个额外的/前缀,但实际的gh api man page没有:
示例:

# list releases in the current repository
$ gh api repos/{owner}/{repo}/releases

# post an issue comment
$ gh api repos/{owner}/{repo}/issues/123/comments -f body='Hi from CLI'

字符串
端点参数中的占位符值“{owner}“、“{repo}“和“{branch}“将被替换为当前目录的存储库或GH_REPO环境变量中指定的存储库中的值。
请注意,在某些shell中,例如PowerShell,您可能需要将任何包含“{...}”的值括在引号中,以防止shell对花括号应用特殊含义。

hivapdat

hivapdat2#

我决定回答我自己的问题,因为我花了几个小时才意识到这个问题的解决方案,而且我在网上找不到它。基本上,发生这种情况的原因纯粹是由于路径的编写方式。如果你删除单词'repos'前面的/,那么这个命令在PowerShell、wsl和git-bash终端上都能很好地工作。
所以正确的脚本应该是:

# GitHub CLI api
# https://cli.github.com/manual/gh_api

gh api \
  -H "Accept: application/vnd.github+json" \
  repos/OWNER/REPO/pulls/PULL_NUMBER

字符串
同样,这与GitHub API文档中正式编写的内容不同,因为我删除了单词“repos”之前的/。我希望这也能帮助其他人。

t2a7ltrp

t2a7ltrp3#

我也遇到了类似的错误,但不是因为上面提到的原因。原因是gh api \后面有尾随空格。在我删除这些尾随空格后,得到了我所期望的响应。

gh api \ <check spaces here, there should not be any>
  -H "Accept: application/vnd.github+json" \
  repos/OWNER/REPO/pulls/PULL_NUMBER

字符串

相关问题