我正在通过Vercel部署我的Vite的应用程序。
其中一个依赖项是Github中的私有存储库,
所以我创建了个人令牌并在package.json
"dependencies": {
...
"my-private-repo": "git+https://<personal_access_token>:x-oauth-basic@github.com/myusename/my-private-repo.git"
},
我试着构建,一切似乎都很好在本地
然而,在Vercel构建它扔给我这个:
error Command failed.
Exit code: 128
Command: git
Arguments: ls-remote --tags --heads https://<personal_access_token>:x-oauth-basic@github.com/myusename/my-private-repo.git
所以我发现git ls-remote
才是真正的问题
下面是我使用令牌
运行git ls-remote
的时候git ls-remote https://<personal_access_token>:x-oauth-basic@github.com/myusename/my-private-repo.git
>>> remote: Invalid username or password
这里是当我运行git ls-remote
没有令牌
git ls-remote https://github.com/myusename/my-private-repo.git
>>> 9a1daaf0faa44d30afd22121cb8da061d25d9044 refs/heads/main
为什么git ls-remote
只工作时,没有提供凭据,因为这是一个私人回购?这对Github来说是不是很奇怪?
如何在Vercel配置或Github配置中解决这个问题?
为什么git ls-remote只在没有提供凭证的情况下工作,因为这是一个私有的repo?
因为您的本地凭据帮助器在其中缓存了凭据。
git config --global credential-helper
xxx
# replace xxx by the actual value
# check what is cached with:
printf "host=github.comnprotocol=https" | git credential-xxx get
您可以临时删除
# replace 'You' with the account seen in the previous get command
printf "host=github.comnprotocol=httpsnusername=You" | git credential-xxx erase
然后在本地重试git ls-remote https://<personal_access_token>:x-oauth-basic@github.com/
命令进行测试。
如下所示,请查看以下语法是否更好:
git ls-remote https://oauth2:TOKEN@github.com/username/repo.git