GitHub - 错误:无法读取“https://github.com”的用户名:没有这样的文件或目录

239

当我尝试在 Windows 上使用 Git Bash 拉取代码时,出现了以下问题:

fatal: could not read Username for 'https://github.com': No such file or directory

我已经尝试实施这里提供的被接受的解决方案:

然而问题仍然存在。

在添加/删除源之后,我仍然遇到相同的错误。

能否就此问题提供建议?

谢谢!


2
你配置了用户名吗? git config --global user.name "Your Name Here" - Raul Andres
我已经尝试过了,但它没有引用我的 git 用户名,我认为它是因为我在这里调用的 git 存储库的用户名出现问题了。 - noobie-php
1
简单地重新启动解决了我的问题。 - m_ocean
不要被“找不到文件或目录”所分散注意力,最好的做法是认为错误提示只是表明你需要向命令添加身份验证(因为它是私有存储库等)。例如,通过使用私有访问令牌。 - klaus thorn
33个回答

4

这里有一个简单的诀窍可行

android studio -> 设置 -> 版本控制 -> git -> 使用凭据助手

玩得开心!


你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心找到有关如何编写良好答案的更多信息。 - Community

3

简短回答:

git init
git add README.md
git commit -m "first commit"


git remote add origin https://github.com/{USER_NAME}/{REPOSITORY_NAME}.git
git push --set-upstream origin master

如果这不是一个新仓库,请忽略前三行。

详细说明:

我遇到了同样的问题,因为以上回答都没有帮助我,所以我决定发表这个解决方案,它对我有效。

一些注意事项:

  • 已生成SSH密钥
  • 将SSH密钥添加到GitHub上,仍旧出现此错误。
  • 我在GitHub上为此项目创建了一个新的存储库,并按照描述的步骤进行了操作。

作为命令行工具,我使用了GitShell(对于Windows,我使用Mac上的Terminal.app)。
GitShell是官方的GitHub工具,可以从https://windows.github.com/下载。


3

3

对于在Jenkins pipeline中遇到此错误的用户,可以使用SSH Agent插件来解决。随后,将您的git命令包装在类似以下方式中:

sshagent(['my-ssh-key']) {
    git remote set-url origin git@github.com:username/reponame.git
    sh 'git push origin branch_name'
}

2

将您的远程URL替换为以下内容:

git remote set-url origin https://<username>@github.com/<username>/<repo>.git

1
所有其他帖子都指示将密码放在远程URL中,这将以明文形式存储在磁盘上 - 这是一种不安全的做法。只需要用户名,凭据存储库将请求您的GitHub用户名/密码,然后安全地存储它以自动使用。 - Bae
在Android Studio中,前往VCS -> GIT -> 远程,然后使用https://<username>@github.com/<username>/<repo>.git替换URL。 - Waqas K

2

在我的情况下,我需要在GitHub上设置“个人访问令牌”:

  1. 设置 -> 开发者设置

  2. 并启用SSO。


2
[SSH] executing...
fatal: could not read Username for 'https://github.com': No such device or address

[SSH] completed
[SSH] exit-status: 1

Build step 'Execute shell script on remote host using ssh' marked build as failure
Finished: FAILURE

解决方案: 如果仓库是私有的并且属于其他人或组织,而您是该仓库的贡献者,则可以从Jenkins作业中运行git命令,它不会提示您输入用户名和密码。

https://用户名:令牌@github.com/账户名/仓库名.git


2
我正在使用GitHub Actions,其中的作业被配置为完成任务。这个解决方案适用于所有的CI(Jenkins、Travis、Circle),其中git命令执行环境发生变化。
job1: 使用个人访问令牌(PAT)通过GitHub Actions actions/checkout@v2检出存储库,作业成功完成并克隆了存储库。
job2: 使用命令git fetch --tags获取标签。作业失败并显示相同的错误:fatal: could not read Username for 'https://github.com': No such file or directory。
失败原因:当作业更改时,命令运行环境也会更改,即使存储库存在,也需要提供github凭据才能获取标签。
解决方法:在job2中获取标签之前添加此命令:
git config remote.origin.url 'https://${{ your_personal_access_token }}@github.com/${{ github.repository }}'
注意:${{ expression }}是github actions yaml语法,用于揭示环境变量/运行表达式。

我之前使用git pull时也遇到了完全相同的问题,这个方法完美解决了。所需的权限是repoworkflow。在你的Github设置/秘密和变量/操作中设置令牌。 - undefined
- name: 同步存储库与EC2 env: HOST: ${{ secrets.HOST }} USER: ${{ secrets.USERNAME}} run: | ssh -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa $USER@$HOST "\ git config remote.origin.url 'https://${{ secrets.GH_PAT }}@github.com/${{ secrets.USERNAME}}/YOUR_REPO' && \ git pull origin main" - undefined

2

我也有连接到私人 GitLab 存储库的账户相同问题。我在这个 Stack Overflow 页面上找到了解决方案,但仍然存在疑问。发布此图片以说明需要完成的操作。

Credential Helper to Resolve Git Account Issue


对我来说有效,@Raj,所以你并没有完全错。谢谢。 - Martin Revert

1
这是一个与系统凭据缓存中存储的凭据有关的问题。您可能已将配置变量“credential.helper”设置为wincred或winstore,但无法清除它。如果您启动控制面板并启动凭据管理器应用程序,然后查找标记为git:https://github.com的通用凭据部分中的项目。如果您删除这些内容,下次将重新创建它们,但凭据助手实用程序将要求您提供新的凭据。

你指的是哪个工具?我目前正在使用Windows的Bash。 - noobie-php
是的 - 所以请查看凭据管理器控制面板小程序。如果没有像上面提到的那样,请检查您的配置 - git config --global -l | grep credential。如果有任何输出,那就是试图在推送时向服务器提供存储凭据的实用程序。 - patthoyts
2
伙计,我认为这不是问题,让我解释一下,也许你能明白我的意思。git remote add origin https://github.com/username/Hello-World.git 这个 git 仓库链接中绑定的 username 正在出现问题,我不认为我的 OWN username 在这里出了问题。据我所知,凭据管理器有助于管理个人凭据,而不是存储库的凭据。 - noobie-php

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接