fatal: não foi possível ler o nome de usuário para 'https://github.com': esse arquivo ou diretório não existe

95

Eu tenho o seguinte problema quando tento extrair código usando git Bash no Windows:

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

Já tentei implementar a solução aceita fornecida aqui:

... mas o problema persiste. Depois de adicionar / remover a origem, ainda recebo o mesmo erro.

noobie-php
fonte
Você configurou o nome de usuário? git config --global user.name "Your Name Here"
Raul Andres
Eu já tentei isso, mas não está se referindo ao meu nome de usuário git, acho que está dando problema para o nome de usuário do repositório git que estou chamando aqui.
noobie-php
Será que mudar para SSH como uma solução alternativa corrige isso? albertech.blogspot.com/2016/11/…
jar

Respostas:

68

Siga as etapas para configurar as chaves SSH aqui: https://help.github.com/articles/generating-ssh-keys

OU

git remote add origin https://{username}:{password}@github.com/{username}/project.git
Tony Zampogna
fonte
3
A segunda opção não funcionou porque eu já tinha adicionado 'github de origem'. Eu removi a origem [git remote remove origin] e então escrevi o que está na resposta com meu nome de usuário e senha e funcionou bem.
P_Rein
9
em vez de excluir e adicionar novamente a origem, você também pode apenas alterar o URL usandogit remote set-url origin https://{username}:{password}@github.com/...
Chris
10
A solução @Chris funciona, mas armazena a senha da conta do usuário no github e permite que ela seja lida apenas digitandogit remote -v
Jefferson Silva
A opção de Chris funcionou para mim! Acompanhei com Jefferson Silva e funcionou bem. Ainda tenho uma error: cannot spawn sh: No such file or directorymensagem ...
TheSciGuy
14

Eu enfrentei exatamente o mesmo problema. Esse problema ocorreu quando eu clonei usando o URL HTTPS e tentei enviar as alterações usando Git Bash no Windows usando:

git clone https://github.com/{username}/{repo}.git

No entanto, quando usei o URL SSH para clonar, este problema não ocorreu:

git clone [email protected]:{username}/{repo}.git
Fayaz
fonte
3
Ok, mas por que isso ocorre?
Gili
Por causa de um bug em msysgit: github.com/msysgit/msysgit/issues/153
Fayaz
Recebo esta mensagem em um contêiner do Docker em execução no gitlab. A imagem de base é python:3.7-slim. Portanto, não está relacionado ao Windows.
Martin Thoma
No meu caso, era um repositório de organização usando ssh: //git.gartner.com
Ankush
11

Observe que, se você estiver recebendo este erro:

fatal: could not read Username for 'https://github.com': No error

Então você precisa atualizar seu Git para a versão 2.16ou posterior.

Rosdi Kasim
fonte
10

Para mim, nada funcionou do sugerido acima, eu uso o git pullscript de shell jenkins e, aparentemente, leva o nome de usuário errado. Passei muito tempo antes de encontrar uma maneira de consertar sem mudar para SSH.

Na pasta do usuário, crie o arquivo .gitconfig (se ainda não o tiver feito) e coloque suas credenciais no seguinte formato:, https://user:[email protected]mais informações . Depois que seu arquivo .gitconfig vincular a essas credenciais, no meu caso foi:

[credential] helper = store --file /Users/admin/.git-credentials

Agora o git sempre usará essas credenciais, não importa o quê. Espero que ajude alguém, como me ajudou.

Katia
fonte
para mim só funcionou quando eu coloco [credential] helper = store --file /..../.git-credentialsem .git/configno meu diretório de trabalho
Kirill Oficerov
5

Encontrei minha resposta aqui :

edite ~/.gitconfige adicione o seguinte:

[url "[email protected]:"]
 insteadOf = https://github.com/

Embora resolva um problema diferente, o código de erro é o mesmo ...

Louis Parkin
fonte
4

Se você quiser continuar, use https em vez de ssh e evite digitar seu nome de usuário e senha por motivos de segurança.

Você também pode tentar o token Github OAuth , então você pode fazer git config remote.origin.url 'https://{token}@github.com/{username}/{project}.git' ou git remote add origin 'https://{token}@github.com/{username}/{project}.git'

Isso funciona para mim!

lua espiral
fonte
4

Este erro também pode ocorrer ao tentar clonar um URL HTTP inválido. Por exemplo, este é o erro que recebi ao tentar clonar um URL do GitHub que estava alguns caracteres fora:

$ 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/'

Na verdade, aconteceu dentro do Emacs, então o erro no Emacs parecia com este:

fatal: could not read Username for ’https://github.com’: No such device or address

Então, em vez de um erro útil dizendo que não havia tal repositório naquele URL, ele me deu isso, me enviando em uma busca selvagem até que finalmente percebi que o URL estava incorreto.

Isso é com git versão 2.7.4.

Estou postando isso aqui porque aconteceu comigo há um mês e novamente apenas agora, me enviando na mesma busca do ganso selvagem novamente. > :(

blujay
fonte
3

Resposta curta:

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

Ignore as três primeiras linhas se não for um novo repositório.

Descrição mais longa:

Só tive o mesmo problema, como nenhuma das respostas acima me ajudou, resolvi postar esta solução que funcionou para mim.

Algumas notas:

  • A chave SSH foi gerada
  • A chave SSH foi adicionada ao github, ainda tinha esse erro.
  • Fiz um novo repositório no GitHub para este projeto e segui as etapas descritas

Como ferramenta de linha de comando, usei o GitShell (para Windows, uso Terminal.app no ​​Mac).
GitShell é a ferramenta oficial do GitHub, pode ser baixado em https://windows.github.com/

Espero que isso ajude a quem tem o mesmo problema.

Magia criativa
fonte
1

Este é um problema com suas credenciais armazenadas no cache de credenciais do sistema. Você provavelmente tem a variável de configuração 'credential.helper' definida como wincred ou winstore e não está conseguindo limpá-la. Se você iniciar o Painel de Controle e iniciar o miniaplicativo Credential Manager, procure os itens na seção de credenciais genéricas denominada "git: https://github.com ". Se você excluí-los, o será recriado na próxima vez, mas o utilitário auxiliar de credenciais solicitará suas novas credenciais.

patthoyts
fonte
a qual ferramenta você está se referindo estou usando o Bash para windows
noobie-php
sim - dê uma olhada no miniaplicativo Credential Manager Control Panel. Se não houver nada como mencionado, verifique sua configuração - git config --global -l | grep credential. Se houver alguma saída, será o utilitário que está tentando alimentar suas credenciais armazenadas para o servidor quando você faz push.
patthoyts
1
Mate eu acho que este não é o problema, deixe-me explicar, talvez você entenda o que estou tentando dizer, git remote add origin https://github.com/username/Hello-World.gito usernameque está vinculado a este link repo git está causando problemas, eu não acho que meu PRÓPRIO nome de usuário está causando problemas aqui. Pelo que eu sei, o gerenciador de credenciais ajuda a gerenciar credenciais pessoais, não as credenciais do repositório.
noobie-php
1

Substitua seu url remoto assim:

git remote set-url origin https://<username>@github.com/<username>/<repo>.git
GrossesKinoZuerich
fonte
Todas as outras postagens indicam colocar a senha na url remota, que então será armazenada em texto simples no disco - uma segurança não, não. Apenas o nome de usuário é necessário, o armazenamento de credenciais irá solicitar seu nome de usuário / senha do github e, em seguida, armazenará com segurança para ser usado automaticamente.
Bae
1

TL; DR: verifique se você pode ler / gravar /dev/tty. Se não e você já usou supara abrir o shell, verifique se você o usou corretamente.

Eu estava enfrentando o mesmo problema, mas no Linux e encontrei o problema. Não tenho minhas credenciais armazenadas, então sempre as insiro quando solicitado:

Username for 'https://github.com': foo
Password for 'https://[email protected]': 

A maneira como git lida com conexões http (s) está usando /usr/lib/git-core/git-remote-https você pode ver strace aqui:

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 +++

Tentei chamá-lo diretamente:

echo "list for-push" | strace /usr/lib/git-core/git-remote-https my

e o resultado:

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 +++

E aqui veio a mim:

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 tenta ler as credenciais via /dev/tty então testei se funciona:

$ echo ahoj > /dev/tty
bash: /dev/tty: No such device or address

Mas em outro terminal:

# echo ahoj > /dev/tty
ahoj

Eu sabia que mudei para este usuário usando, suentão saí do shell para ver como e descobri que usei o comandosu danman - então testei novamente:

~# 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

Provavelmente ignorei a mensagem e continuei trabalhando, mas esse foi o motivo. Quando mudei usando o corretosu - danman tudo funcionou bem:

~# su - danman
danman@speedy:~$ echo ahoj > /dev/tty
ahoj

Depois disso, o git começou a funcionar corretamente

danman
fonte
1

Para aqueles que recebem esse erro em um pipeline do Jenkins, ele pode ser corrigido usando um plug-in do Agente SSH . Em seguida, envolva seus comandos git em algo assim:

sshagent(['my-ssh-key']) {
    git remote set-url origin [email protected]:username/reponame.git
    sh 'git push origin branch_name'
}
Nagev
fonte
0

Tente usar um shell normal do Windows, como o CMD.

Vajiheh habibi
fonte
0

Anteriormente, quando não recebi permissão para acessar o repo, também adicionei o pubkey SSH ao gitlab. Nesse ponto consegui acessar o repo e rodar o vendedor do mod go, o mesmo problema que acontece. (talvez por causa do cache)

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

Depois de um tempo tentando, decido remover a chave SSH e os prompts do terminal preenchendo o nome de usuário e a senha. Está tudo bem então!

Long Tran
fonte
0

Tive o mesmo problema no IntelliJ IDE e, para mim, nada funcionou do sugerido acima. O que funcionou para mim foi mudar o acesso do repositório Git de privado para público.

Kapil Garg
fonte
-1

tentando a solução CreativeMagic, o problema de credencial é confirmado:

prompt >>> Nome de usuário para ' https://github.com '

Então, mudei meu url de origem com

git remote set-url --add origin http://github.com/user/repo

e

git push --set-upstream origin master
tuxun
fonte
1
é por isso que eu nunca ajudo as pessoas
tuxun