当我尝试在Windows上使用git Bash提取代码时遇到以下问题:
fatal: could not read Username for 'https://github.com': No such file or directory
我已经尝试实现此处提供的可接受的解决方案:
...但是问题仍然存在。添加/删除原点后,我仍然遇到相同的错误。
当我尝试在Windows上使用git Bash提取代码时遇到以下问题:
fatal: could not read Username for 'https://github.com': No such file or directory
我已经尝试实现此处提供的可接受的解决方案:
...但是问题仍然存在。添加/删除原点后,我仍然遇到相同的错误。
Answers:
请按照以下步骤在此处设置SSH密钥:https : //help.github.com/articles/generating-ssh-keys
要么
git remote add origin https://{username}:{password}@github.com/{username}/project.git
git remote set-url origin https://{username}:{password}@github.com/...
git remote -v
error: cannot spawn sh: No such file or directory
消息...
我面临着完全相同的问题。当我使用HTTPS URL克隆然后尝试在Windows上使用Git Bash推送更改时,会发生此问题:
git clone https://github.com/{username}/{repo}.git
但是,当我使用SSH URL进行克隆时,并未发生此问题:
git clone git@github.com:{username}/{repo}.git
python:3.7-slim
。因此,它与Windows不相关。
请注意,如果出现此错误,请执行以下操作:
fatal: could not read Username for 'https://github.com': No error
然后,您需要将Git更新到版本2.16
或更高版本。
对我而言,以上建议均无济于事,我git pull
在jenkins shell脚本中使用,显然它使用了错误的用户名。我花了很长时间才找到一种无需切换到SSH即可解决该问题的方法。
在您用户的文件夹中,创建.gitconfig文件(如果您还没有的话),并将您的凭据设置为以下格式:https://user:pass@example.com
,更多信息。在您的.gitconfig文件链接到这些凭据之后,在我看来,它是:
[credential]
helper = store --file /Users/admin/.git-credentials
现在git无论如何都将始终使用这些凭据。我希望它能帮助某人,就像它帮助了我一样。
[credential] helper = store --file /..../.git-credentials
中.git/config
的我的工作目录
如果要继续使用https而不是ssh,并且出于安全原因,请避免键入用户名和密码。
您也可以尝试Github上的OAuth令牌,那么你可以做
git config remote.origin.url 'https://{token}@github.com/{username}/{project}.git'
或
git remote add origin 'https://{token}@github.com/{username}/{project}.git'
这对我有用!
尝试克隆无效的HTTP URL时也会发生此错误。例如,这是我在尝试克隆距离几个字符的GitHub URL时遇到的错误:
$ git clone -v http://github.com/username/repo-name.git
Cloning into 'repo-name'...
Username for 'https://github.com':
Password for 'https://github.com':
remote: Repository not found.
fatal: Authentication failed for 'https://github.com/username/repo-name.git/'
但是,它实际上发生在Emacs内部,因此Emacs中的错误如下所示:
fatal: could not read Username for ’https://github.com’: No such device or address
因此,与其说一个有用的错误,不是那个URL上没有这样的仓库,不如说是,给了我一个疯狂的追赶,直到我终于意识到URL不正确。
这是git版本2.7.4。
我将其发布在这里是因为它在一个月前(又一次又一次)发生在我身上,再次将我送往追赶相同的野鹅。> :(
简短答案:
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
如果它不是新的存储库,请忽略前三行。
较长的说明:
只是遇到了同样的问题,上述答案中的任何一个都不对我有帮助,所以我决定发布适用于我的解决方案。
几点注意事项:
作为命令行工具,我使用了GitShell(对于Windows,我使用了Mac上的Terminal.app)。
GitShell是官方的GitHub工具,可以从https://windows.github.com/下载
希望这对有相同问题的任何人有所帮助。
我通过安装更新版本的Git来解决此问题。我安装的版本是https://git-scm.com的 2.10.2 。请参阅此处的最后一篇文章:https : //www.bountysource.com/issues/31602800-git-fails-to-authenticate-access-to-private-repository-over-https
使用较新的Git Bash,将弹出凭证管理器窗口,您可以输入用户名和密码,并且可以使用!
这是您在系统凭据缓存中存储的凭据存在的问题。您可能已将配置变量'credential.helper'设置为wincred或winstore,但无法清除它。如果启动控制面板并启动Credential Manager小程序,请在通用凭据部分中查找标有“ git:https : //github.com ”的项目。如果删除它们,则下次将重新创建,但是凭据帮助器实用程序将要求您提供新的凭据。
git config --global -l | grep credential
。如果有任何输出,则该实用程序将在您推送时尝试将您存储的凭据提供给服务器。
git remote add origin https://github.com/username/Hello-World.git
在username
到这个混帐回购协议链路制造麻烦被栓,我不认为我自己的用户名在这里制造麻烦。据我所知,凭证管理器有助于管理个人凭证,而不是存储库的凭证。
像这样替换您的远程URL:
git remote set-url origin https://<username>@github.com/<username>/<repo>.git
TL; DR:检查是否可以读写/dev/tty
。如果否,并且您曾经su
打开过外壳,请检查是否正确使用了它。
我遇到了同样的问题,但是在Linux上,我已经找到了问题。我没有存储我的凭据,所以我总是在提示时输入它们:
Username for 'https://github.com': foo
Password for 'https://foo@github.com':
git处理http(s)连接的方式正在使用中,/usr/lib/git-core/git-remote-https
您可以在此处查看strace:
stat("/usr/lib/git-core/git-remote-https", {st_mode=S_IFREG|0755, st_size=1366784, ...}) = 0
pipe([9, 10]) = 0
rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f65398bb350) = 18177
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
close(10) = 0
read(9, "", 8) = 0
close(9) = 0
close(5) = 0
close(8) = 0
dup(7) = 5
fcntl(5, F_GETFL) = 0 (flags O_RDONLY)
write(6, "capabilities\n", 13) = 13
fstat(5, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
read(5, "fetch\noption\npush\ncheck-connecti"..., 4096) = 38
write(6, "option progress true\n", 21) = 21
read(5, "ok\n", 4096) = 3
write(6, "option verbosity 1\n", 19) = 19
read(5, "ok\n", 4096) = 3
stat(".git/packed-refs", {st_mode=S_IFREG|0664, st_size=675, ...}) = 0
lstat(".git/objects/10/52401742a2e9a3e8bf068b115c3818180bf19e", {st_mode=S_IFREG|0444, st_size=179, ...}) = 0
lstat(".git/objects/4e/35fa16cf8f2676600f56e9ba78cf730adc706e", {st_mode=S_IFREG|0444, st_size=178, ...}) = 0
dup(7) = 8
fcntl(8, F_GETFL) = 0 (flags O_RDONLY)
close(8) = 0
write(6, "list for-push\n", 14) = 14
read(5, fatal: could not read Username for 'https://github.com': No such device or address
"", 4096) = 0
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=18177, si_uid=1000, si_status=128, si_utime=6, si_stime=2} ---
exit_group(128) = ?
+++ exited with 128 +++
所以我尝试直接调用它:
echo "list for-push" | strace /usr/lib/git-core/git-remote-https my
结果:
poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 1 ([{fd=3, revents=POLLIN|POLLRDNORM}])
recvfrom(3, "\27\3\3\1\32", 5, 0, NULL, NULL) = 5
recvfrom(3, "\307|4Q\21\306\334\244o\237-\230\255\336\25\215D\257\227\274\r\330\314U\5\17\217T\274\262M\223"..., 282, 0, NULL, NULL) = 282
openat(AT_FDCWD, "/dev/tty", O_RDONLY) = -1 ENXIO (No such device or address)
openat(AT_FDCWD, "/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=2995, ...}) = 0
read(4, "# Locale name alias data base.\n#"..., 4096) = 2995
read(4, "", 4096) = 0
close(4) = 0
openat(AT_FDCWD, "/usr/share/locale/en_US/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale-langpack/en_US/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale-langpack/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
write(2, "fatal: could not read Username f"..., 83fatal: could not read Username for 'https://github.com': No such device or address
) = 83
exit_group(128) = ?
+++ exited with 128 +++
在这里来到我这里:
openat(AT_FDCWD, "/dev/tty", O_RDONLY) = -1 ENXIO (No such device or address)
...
write(2, "fatal: could not read Username f"..., 83fatal: could not read Username for 'https://github.com': No such device or address
) = 83
git-remote-https
尝试通过读取凭据,/dev/tty
所以我测试了它是否有效:
$ echo ahoj > /dev/tty
bash: /dev/tty: No such device or address
但是在另一个终端:
# echo ahoj > /dev/tty
ahoj
我知道我使用切换到了该用户,su
所以我退出了外壳以查看操作方法,然后发现我使用了命令,su danman -
因此我再次对其进行了测试:
~# su danman -
bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
/root$ echo ahoj > /dev/tty
bash: /dev/tty: No such device or address
我可能忽略了该消息并继续工作,但这就是原因。当我使用正确的开关时,su - danman
一切正常:
~# su - danman
danman@speedy:~$ echo ahoj > /dev/tty
ahoj
之后,git开始正常工作
早些时候,当我没有被授予访问存储库的权限时,我还把SSH pubkey添加到了gitlab中。在这一点上,我可以访问存储库并运行go mod供应商,这与您遇到的问题相同。(可能是由于缓存)
go mod vendor
go: errors parsing go.mod:
/Users/macos/Documents/sample/go.mod:22: git ls-remote -q https://git.aaa.team/core/some_repo.git in /Users/macos/go/pkg/mod/cache/vcs/a94d20a18fd56245f5d0f9f1601688930cad7046e55dd453b82e959b12d78369: exit status 128:
fatal: could not read Username for 'https://git.aaa.team': terminal prompts disabled
经过一段时间的尝试,我决定删除SSH密钥,并在终端提示中填写用户名和密码。一切都很好!
我在IntelliJ IDE中遇到了同样的问题,对我来说,以上建议均无济于事。对我有用的是将Git存储库的访问权限从私有更改为公共。
尝试使用CreativeMagic解决方案时,将确认凭据问题:
提示>>>' https://github.com '的用户名
所以,我用
git remote set-url --add origin http://github.com/user/repo
和
git push --set-upstream origin master
git config --global user.name "Your Name Here"