Questão Como garanto que o Git não me pede meu nome de usuário e senha do GitHub?


Eu estou trabalhando com um repo no GitHub e toda vez que eu tento empurrar alguma coisa, ele pede meu nome de usuário e senha do GitHub. Eu não quero isso fazendo isso.

Eu tentei as instruções em configurando seu email no Git, ou seja, configurar as variáveis ​​Gitub.user e github.token do Git, mas isso não fez nenhuma diferença.

Eu não entendo porque isso está acontecendo.


158


origem


Você precisa armazenar em cache a senha: help.github.com/articles/set-up-git#password-caching - Piotr Usewicz


Respostas:


Você precisa configurar um agente ssh contra o qual você só precisa autenticar uma vez. Vejo esta resposta mais de SO para um howto.


27



Mas esta solução é para frases da família ssh. O problema é que o git usa o "git push" que não aciona o ssh-agent, eu suponho. (Eu já fiz isso, então eu sei que não funciona.) - picardo
@picardo: Eu fiz isso e realmente funciona. - Daenyth


Tive um problema semelhante hoje: eu estraguei as coisas na minha cópia de trabalho, então decidi renomear o diretório e clonar meu projeto novamente no github. Mas depois de fazer isso, eu tinha que digitar minha senha para fazer qualquer solicitação pull / push, em vez de digitar a senha apenas uma vez como eu costumava fazer.

Isso porque hoje eu usei o protocolo https para clonar o projeto! Para verificar qual protocolo você está usando, basta executar

git config -l

e olhe para a linha que começa com 'remote.origin.url'.

Para trocar de protocolos:

git config remote.origin.url git@github.com:the_repository_username/your_project.git

the_repository_username e your_project deve ser substituído pelo nome do repositório apropriado e pelo proprietário desse repositório. O nome de usuário será seu se você possuir o repositório ou o nome de usuário do repositório de outra forma.


205



Isso funcionou para mim. Uma coisa é que o URL não contém meu nome de usuário, mas o endereço do repositório como aparece no github: git@github.com:some-user/repo-name.git - B Seven
Nota: o Google me trouxe aqui. Eu tinha o remote.origin.url definido para o método https e nem percebeu que havia https vs ssh métodos. Este URL ajudou-me a ver o óbvio: help.github.com/articles/… - Chris K
Existe alguma maneira de passar a senha também? - zishe
Q para aqueles com conhecimento git: Qualquer diferença (ou preferência) entre git config remote.origin.url ... usado acima, vs. git remote set-url origin ...? - Daryn
Eu não consegui descobrir como remover uma origem errada como essa. A resposta é: git remote rm origin - Vacilando


Se você estiver usando HTTPS em vez de SSH, você pode seguir isto:

  1. Encontre seu URL remoto (remote.origin.url) com

    git config -l
    

    obrigado a Sergio Morstabilini

  2. Seu URL remoto será assim: https: // {USERNAME} @ github.com / {USERNAME} / {REPONAME} .git

  3. Execute este comando:

    git config remote.origin.url https://{USERNAME}:{PASSWORD}@github.com/{USERNAME}/{REPONAME}.git
    

28



meu nome de usuário em si contém @não funcionou para mim. - coding_idiot
Mas se isso não acontecer (você não precisa usar o seu e-mail), ele funciona perfeitamente! Obrigado. - Killah
Se o seu nome de usuário incluir um @, você precisará codificá-lo por URL. meyerweb.com/eric/tools/dencoder - Tim Bodeit
Você deve omitir sua senha por motivos de segurança. - zygimantus
cuidado, a senha será armazenada em texto simples dentro da .git/config Arquivo! - Amro


Eu prefiro usar HTTPS, acho mais fácil e mais seguro do que configurar as chaves ssh.

Usando HTTPS, você pode impedir que o git pergunte ao seu nome de usuário para os remotos do github o seguinte:

git config --global url."https://yourusername@github.com".insteadOf "https://github.com"

E você pode pelo menos reduzir a frequência git pede sua senha com:

git config --global credential.helper 'cache --timeout=28800'

Onde 28800 são 8 horas. Eu uso essa configuração para inserir minha senha apenas uma vez, quando eu começo o meu dia de trabalho.

Depois disso, você terá essas entradas dentro do seu ~/.gitconfig

[url "https://yourusername@github.com"]
    insteadOf = https://github.com

[credential]
    helper = cache --timeout=28800

Fonte:

http://git-scm.com/docs/git-credential-cache

http://git-scm.com/docs/git-config


24



Funcionou como um encanto. obrigado. - david euler


Se você estiver no Windows usando HTTPS, tente o Loja de credenciais do Git - ele usa o Windows Credential Store para armazenar seu nome e senha.

Windows Credential Store for Git
This application is a small helper app designed to follow the 
git credentials API as defined by the Git Documentation.

Installation
1. Download the git-credential-winstore.exe application
2. Run it! If you have GIT in your PATH, it should just work.

Então, da próxima vez que você digitar seu nome e senha, ele os lembrará para você.


6



Obrigado. O projeto foi renomeado para Git-Credential-Manager-for-Windows. - Michael S.


Quando você configura uma chave ssh para o github, se ela não for sua chave padrão, você precisará adicionar uma seção ao seu ~/.ssh/config

Host *github.com
    User git
    IdentityFile ~/.ssh/github_id_rsa

5





Além disso, se você quiser ser solicitado a fornecer sua senha todas as vezes, mas não apenas seu nome de usuário, configure o controle remoto como HTTPS com um nome de usuário.

git config remote.origin.url https://USERNAME@github.com/repo_owner/repo_name

Depois disso, você será solicitado a fornecer sua senha todas as vezes, mas não o seu nome de usuário.

É assim que eu prefiro, pois gosto de ser forçado a digitar minha senha do github antes de compartilhar com o mundo.


5