Por que o Github está solicitando nome de usuário / senha ao seguir as instruções na tela e enviar um novo repositório?

298

Eu sou o proprietário de uma organização no github e acabei de criar um repositório e tentei forçar, mas estou enfrentando um problema em que ele está me pedindo meu nome de usuário, mesmo que eu possa fazer o SSH muito bem:

$ ssh -T [email protected]
Hi Celc! You've successfully authenticated, but GitHub does not provide shell access.
$ git add .
$ git commit -m 'first commit'
[master (root-commit) 3f1b963] first commit
 6 files changed, 59 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 main.js
 create mode 100644 package.json
 create mode 100644 readme.markdown
 create mode 100644 views/index.ejs
 create mode 100644 views/layout.ejs
$ git remote add origin https://github.com/WEMP/project-slideshow.git
$ git push -u origin master
Username for 'https://github.com':

O que estou fazendo de errado? Isso nunca aconteceu comigo antes, mas recentemente também atualizei para o git 1.7.10.3.

Kit Sunde
fonte

Respostas:

662

Não use HTTP, use SSH

mudança

https://github.com/WEMP/project-slideshow.git 

para

[email protected]:WEMP/project-slideshow.git

você pode fazer isso em .git/configarquivo

Hugo
fonte
1
Obrigado! Acabei de descobrir isso depois de ler stackoverflow.com/a/10126412/29347 , não acho que o github normalmente me dê um repo remoto como HTTPS, o que causou alguma confusão.
precisa
2
Você pode alterar essa opção clicando no botão em que copia o URL do clone.
Derek Adair
Para MacOS. Problema ao atualizar para os macos mais recentes. stackoverflow.com/a/39616339/1445102
1Rhino
12
Você também pode fazer git remote set-url origin [email protected]:user/repo.git, conforme detalhado em stackoverflow.com/questions/10126381/…
E, finalmente,
54

Eu tive esse mesmo problema e me perguntei por que isso não aconteceu com um repositório de bitbucket que foi clonado com https. Examinando um pouco, descobri que a configuração do repo BB tinha uma URL que incluía meu nome de usuário. Então, eu editei manualmente a configuração do meu repositório GH assim e pronto, não há mais prompt de nome de usuário. Estou no Windows.

Editar your_repo_dir/.git/config(lembre-se: a .gitpasta está oculta)

Mudança:

https://github.com/WEMP/project-slideshow.git

para:

https://*username*@github.com/WEMP/project-slideshow.git

Salve o arquivo. Faça um git pullpara testá-lo.

A maneira correta de fazer isso é provavelmente usando os comandos git bash para editar a configuração, mas editar o arquivo diretamente não parece ser um problema.

Sean
fonte
Esse é um bom ponto, se você incluir o nome de usuário, ele será tratado pelo chaveiro do SO (pelo menos deveria no OSX e, aparentemente, no Windows também). Não há diferença entre editar o arquivo com o bloco de notas ou com o vim / emacs / nano / vi, eu não me preocuparia tanto com esnobes técnicos, é apenas um arquivo de texto simples.
Kit Sunde 28/02
20

Aqui está uma resposta oficial para isso:

Se o Git solicitar um nome de usuário e senha sempre que você tentar interagir com o GitHub, provavelmente você está usando a URL do clone HTTPS para seu repositório.

O uso de um URL remoto HTTPS tem algumas vantagens: é mais fácil de configurar que o SSH e geralmente funciona através de firewalls e proxies rigorosos. No entanto, também solicita que você insira suas credenciais do GitHub toda vez que você extrai ou envia um repositório.

Você pode configurar o Git para armazenar sua senha para você. Se você deseja configurar isso, leia tudo sobre a configuração do cache de senhas .

Catalin Hritcu
fonte
1
Obrigado. Eu argumentaria com o Github que não é mais fácil de configurar se você acabar aqui (:
ecoologic
Esta é uma resposta para uma pergunta porque ela pergunta, POR QUE ?
eli
14

Melhorando a resposta de @ Ianl ,

Parece que, se a autenticação em duas etapas estiver ativada, você precisará usar o token em vez da senha. Você pode gerar um token aqui .

Se você deseja desativar as solicitações de nome de usuário e senha, pode definir o URL da seguinte maneira:

git remote set-url origin https://username:[email protected]/WEMP/project-slideshow.git

Observe que o URL tem o nome de usuário e a senha. Além disso, o .git/configarquivo deve mostrar suas configurações atuais.


Atualização 20200128:

Se você não quiser armazenar a senha no arquivo de configuração, poderá gerar seu token pessoal e substituí-lo pelo token. Aqui estão alguns detalhes .

Ficaria assim -

git remote set-url origin https://username:[email protected]/WEMP/project-slideshow.git
kaushal
fonte
Isso é seguro? Alguém pode simplesmente acessar essas informações do meu computador?
precisa saber é o seguinte
Sim, eles podem acessar do seu computador, pois são armazenados em texto sem formatação em um .git/configarquivo
kaushal 17/01
11

uma nota adicional:

se você já adicionou um controle remoto ($ git remote add origin ...) e precisa alterar esse controle específico, remova primeiro ($ git remote rm origin) antes de adicionar novamente o novo e aprimorado URL do repositório (em que "origem" era o nome do repositório remoto).

para usar o exemplo original:

$ git remote add origin https://github.com/WEMP/project-slideshow.git
$ git remote rm origin
$ git remote add origin https://[email protected]/WEMP/project-slideshow.git
IanI
fonte
4
Você não precisa remover o controle remoto. Você pode simplesmente mudar a URL:git remote set-url origin https://[email protected]/WEMP/project-slideshow.git
shovavnik 23/12
8

Se você estiver usando HTTPS, verifique se o seu URL está correto. Por exemplo:

$ git clone https://github.com/wellle/targets.git
Cloning into 'targets'...
Username for 'https://github.com': ^C

$ git clone https://github.com/wellle/targets.vim.git
Cloning into 'targets.vim'...
remote: Counting objects: 2182, done.
remote: Total 2182 (delta 0), reused 0 (delta 0), pack-reused 2182
Receiving objects: 100% (2182/2182), 595.77 KiB | 0 bytes/s, done.
Resolving deltas: 100% (1044/1044), done.
um nerd pago
fonte
1
Esse é um ótimo ponto! Se você tiver um erro de digitação no URL, será solicitado o 'Nome de usuário' em vez de ser informado de que o repositório não existe.
dmitrii
5

Acabei de receber um email de um administrador do github.com informando o seguinte: "Normalmente, aconselhamos as pessoas a usar a URL HTTPS, a menos que tenham um motivo específico para usar o protocolo SSH. O HTTPS é seguro e fácil de configurar, portanto, assumimos o padrão quando um novo repositório é criado. "

O prompt de senha realmente aceita os detalhes normais de login do github.com. Um tutorial sobre como configurar o cache de senhas pode ser encontrado em https://help.github.com/articles/set-up-git#password-caching . Segui as etapas do tutorial e funcionou para mim.

jochen
fonte
4

Porque você está usando o modo HTTPS . O HTTPS exige que você digite o acesso à sua conta sempre que tentar empurrar ou puxar , mas também existe uma maneira, chamada SSH , e permite que você diga ao git que eu lhe permito a minha conta para este PC e nunca pergunte novamente sobre qualquer acesso de usuário . Para usá-lo, você precisa gerar a chave SSH e adicioná-la à sua conta do Github apenas uma vez . Para fazer isso, siga estas etapas

Como gerar a chave SSH para o Github

Hazarapet Tunanyan
fonte