Git pede o nome de usuário toda vez que eu pressiono

675

Sempre que tento entrar no meu repositório, solicito os dois username & password.

Não tenho problema em digitar novamente minha senha todas as vezes, mas o problema está em inserir nome de usuário. Eu uso httpspara clonar meu repositório.

Então, como posso configurar o git para que não seja solicitado usernameem cada um git push.

Eu sou novo no Linux, mas IIRC no Windows git pushsó pede senha.

RanRag
fonte
1
Pergunta relacionada: stackoverflow.com/questions/2233590/…
Wug
@ Wug: Mas eu não quero armazenar a senha. Eu só quero armazenar o nome de usuário.
21912 RanRag
4
tente seguir essas instruções e omitir a linha da senha.
Wug
há também uma resposta sobre o superusuário para sua pergunta inicial - superuser.com/questions/847181/…
dk14 31/01

Respostas:

975

Editar (por @ dk14 como sugerido por moderadores e comentários)

AVISO: Se você usar credential.helper storea resposta, sua senha será armazenada completamente sem criptografia ("como está") em ~/.git-credentials. Consulte a seção de comentários abaixo ou as respostas da seção "Vinculado", especialmente se o seu empregador tiver tolerância zero para problemas de segurança.

Mesmo sendo aceito, ele não responde à pergunta real do OP sobre omitir apenas um nome de usuário (não uma senha). Para os leitores com esse problema exato, a resposta do @ grawity pode ser útil.


Resposta original (de @Alexander Zhu):

Você pode armazenar suas credenciais usando o seguinte comando

$ git config credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>

Também sugiro que você leia
$ git help credentials

Alexander Zhugastrov
fonte
160
Aviso, não há segurança neste método. Sua senha é armazenada como texto simples.
Marque Lakata
13
você pode encontrar melhores formas de alcançar a segurança aqui - stackoverflow.com/a/28104587/1809978
dk14
4
@ MarkLakata - Diga-me como posso desfazer o comando nesta resposta? Depois de desfazer, usarei um método seguro para armazenar as credenciais.
MasterJoe2
25
@ testerjoe2 trygit config --unset credential.helper
dk14 # 22/16
1
Não se esqueça de definir o tempo limite, o padrão é 15min - defina o valor como 30 milhões para ter cerca de 1 ano. Encontre aqui: stackoverflow.com/a/35942890/1579667
Benj
180

Você pode fazer isso no .git/configarquivo do seu repositório local. Este arquivo contém uma seção chamada 'remote' com uma entrada chamada 'url'. A entrada 'url' deve conter o link https do repositório que você está falando.

Quando você prefixa o host 'url' com seu nome de usuário, gitnão deve mais pedir seu nome de usuário. Aqui está um exemplo:

url = https://[email protected]
MERose
fonte
5
Se você usar caracteres especiais em seu nome de usuário ou senha, deverá escapar deles. Veja en.wikipedia.org/wiki/Percent-escape para os caracteres de escape corretos. por exemplo "! @ #" [sem as aspas] seria substituído por "% 21% 40% 23". Veja também a resposta "Daniel Lerch" abaixo
nsof 10/10/14
1
Outras pessoas que trabalham no mesmo repositório verão meu nome de usuário?
CodyBugstein
17
Essa deve ser a resposta correta para a pergunta do OP, como "como manter o nome de usuário, NÃO a senha". Essa resposta não apenas é a maneira correta de manter o nome de usuário, mas também evita o possível risco à segurança git config credential.helper store.
RayLuo # 21/16
Sou grato por esta resposta e tentei dessa maneira, mas ainda assim me pede sempre (v 2.1.4) - tentei o remoteurl com [email protected] E nome%[email protected] - sempre solicitausername for https://gitlab.com:
eli
1
Eu tentei isso e tenhounable to access 'https://<me>@bitbucket.org:<x>/<y>.git/': Illegal port number
Ian Grainger
118

Autenticando permanentemente com repositórios Git

Execute o seguinte comando para ativar o cache de credenciais:

$ git config credential.helper store
$ git push https://github.com/repo.git

Username for 'https://github.com': <USERNAME>
Password for 'https://[email protected]': <PASSWORD>

O uso também deve especificar o vencimento do cache

git config --global credential.helper "cache --timeout 7200"

Depois de ativar o cache de credenciais, ele será armazenado em cache por 7200 segundos (2 horas) .


Leia credenciais Documentos

$ git help credentials
Jay Patel
fonte
Defino o tempo limite para 7200. Mas pensei em configurá-lo para 5 para teste. Então, defini-o para 5, mas quando tentei pressionar novamente após 30 segundos, não me pediram nome de usuário ou senha.
Buttle Butkus
Pode ser que sua credencial não seja armazenada globalmente.
Jay Patel
Em relação à segurança, vale a pena consultar os documentos: "Este comando armazena em cache credenciais na memória para uso em futuros programas Git. As credenciais armazenadas nunca tocam no disco e são esquecidas após um tempo limite configurável". git-scm.com/docs/git-credential-cache
mloskot
2
não é git config credntial.helper storeesse comando perigoso, responsável por armazenar as credenciais de texto sem formatação no arquivo ~ / .git-credentials? Eu acho (e na minha experiência) o comando ... cache ...- é suficiente: git config --clogal credential.helper 'cache --timeout 7200'ele cria o dir: ~/.git-credential-cachecom o arquivo de cache nele Então, basta executar este comando e NÃO o comando "... store"
eli
Não funcionou para mim. Ainda pedindo senha toda vez
Ian Grainger
75

Adicione novas chaves SSH conforme descrito neste artigo no GitHub .

Se o Git ainda solicitar seu nome de usuário e senha, tente mudar https://github.com/para [email protected]:um URL remoto:

$ git config remote.origin.url 
https://github.com/dir/repo.git

$ git config remote.origin.url "[email protected]:dir/repo.git"
Lukasz Czerwinski
fonte
19
Esta deve ser a resposta certa! Salvar sua credencial é incrivelmente inseguro. Se eu tiver uma chave SSH no lugar, ela me pedirá minha credencial apenas porque não tenho o URL correto, conforme descrito aqui.
Alexis Wilke
2
ou você pode usargit config remote.origin.url "ssh://git@yourRepoHost/yourRepoName.git"
Ndarkness
1
git configuração remote.origin.url [email protected]: adammajewski / raios retro-iteration.git
Adam
1
Obrigado, esta é a resposta que eu estava procurando.
Yupeng Tang 6/03
50

A maneira mais fácil que encontrei foi com este comando:

git config --global credential.https://github.com.username <your_username>

Isso funciona site a site e modifica sua configuração global do git.

Para ver as alterações, use:

git config --global --edit
Ben
fonte
1
Por alguma razão, esse foi o único método que funcionou para mim. Obrigado!
Mathetes
este método é seguro? a senha do github é armazenada apenas no computador local e não é enviada para o github?
Akin Hwan #
Não sei por que essa não é a resposta aprovada, o comando funciona perfeitamente e responde totalmente e apenas à pergunta: armazenar nome de usuário, não senha. Obrigado Ben!
AmaelH 19/01/19
Você também pode executar: [git config --global credential.helper 'cache --timeout = 3600'] Portanto, sua senha será salva por uma hora a cada vez
obenda
31

Se você estiver usando https em vez de ssh, poderá editar "url" .git/configcomo diz user701648, mas se desejar, poderá adicionar também a senha:

url = https://username:[email protected]
Daniel Lerch
fonte
1
E se houver @incluído na minha senha? url = https://username:abc@[email protected]Está me dando um erro de que:Could not resolve host: @[email protected]
Rahul Mankar 18/0618
A usernameparte parece ser ignorada quando o servidor é redirecionado (como de FOO para FOO.git).
22818 Mikhail T.
22

Você pode definir seu nome de usuário para todos os repositórios em um determinado site, colocando algo como o seguinte no seu arquivo de configuração do Git. Você deseja alterar " https://example.com " e "eu" para o URL e seu nome de usuário reais.

[credential "https://example.com"]
    username = me

(Isso é diretamente de "credenciais de ajuda do git")

Alan De Smet
fonte
16

Alterar o repositório clonado funciona:

git remote set-url origin [email protected]:gitusername/projectname.git

Usar credenciais em cache funciona e definir o período de tempo limite torna as coisas menos irritantes. Se você usar o auxiliar de credenciais do Windows, esse deve ser o método mais fácil (especialmente se o SSH estiver bloqueado).

Layer8Err
fonte
Esta é uma resposta correta para GitHub (que a questão é especificamente perguntando ... (não sei por que você se downvoted).
Tim Groeneveld
12

Verifique se você está usando SSH em vez de http. Verifique esta resposta SO.

gkris
fonte
3
Mas eu tive que usar httpporque na minha universidade sshé bloqueado pelo departamento sys-admin.
RanRag
Talvez esse link o ajude.
gkris
Agora há uma página de ajuda oficial do GitHub. O que aconteceu comigo foi que eu clonei um dos meus próprios repositórios antes de fazer o login, para que não me reconhecesse e o padrão para HTTPS, acredito. help.github.com/articles/changing-a-remote-s-url
anon58192932
11

cache do git config --global credential.helper

Kai Wang
fonte
1
Esta é uma resposta melhor no Linux.
Larry
9

Além da resposta do usuário701648, você pode armazenar suas credenciais na sua pasta pessoal (global para todos os projetos), em vez da pasta do projeto usando o seguinte comando

$ git config --global credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>
Yuvi
fonte
9

Quando eu apenas git pull, git pull origin xxx, o git pede nome de usuário e senha.

git config credential.helper store

funciona.

Languoguang
fonte
9

A maneira mais fácil é criar um ~/.netrcarquivo com o seguinte conteúdo:

machine github.com
login YOUR_GITHUB_USERNAME
password YOUR_GITHUB_PASSWORD

(como mostrado aqui: https://gist.github.com/ahoward/2885020 )

Você pode até fechar as permissões desse arquivo para que ninguém possa ler sua senha digitando:

chmod 600 ~/.netrc
Mais simples
fonte
6

Se você usa a versão SSH , não terá problemas com senhas. Somente uma vez você gera uma chave SSH , para informar ao git, que este PC funcionará com esta conta do github e nunca mais me perguntará sobre nenhum acesso (para este pc).

Como gerar SSH para Github

Hazarapet Tunanyan
fonte
4

Para evitar digitar o nome de usuário, mas ainda assim ser solicitado a digitar uma senha, basta clonar seu repositório, incluindo o nome de usuário:

git clone [email protected]/my_repo.git
ManoDestra
fonte
3
  1. Loja $ git config credential.helper

  2. $ git push / push https://github.com/xxx.git

  3. Em seguida, digite seu nome de usuário e senha.

  4. Feito
Stephen Tun Aung
fonte
Não é git push/push https://github.com/xxx.gitque deveria sergit push https://github.com/xxx.git
Mohsin
3

ssh+ key authenticationé a maneira mais confiável do que https+credential.helper

Você pode configurar para usar SSH em vez de HTTPS para todos os repositórios da seguinte maneira:

git config --global url.ssh://[email protected]/.insteadOf https://github.com/

url.<base>.insteadOfestá documentado aqui .

Akif
fonte
2

Método rápido

obtenha o URL do seu git quando estiver dentro do diretório trabalhando:

git config remote.origin.url

então :

git config credential.helper store

git push "url of your git"

solicitará o nome de usuário e a senha pela última vez

feito.

Aominé
fonte
1

Você pode simplesmente correr

git config --global credential.helper wincred

depois de instalar e fazer login no GIT para Windows em seu sistema.

cyperpunk
fonte
Não encontrou a palavra linux na consulta. My bad
cyperpunk
1

(Apenas para Mac OS)

para Windows e Linux , consulte o link da documentação do Github mencionado abaixo.

Da documentação do Github: Link da documentação

Armazenando em cache sua senha do GitHub no Git

  • Você precisa do Git 1.7.10 ou mais recente para usar o assistente de credencial osxkeychain.

    para verificar sua versão do Git: git --version

  • para descobrir o osxkeychain helper já está instalado:

    git credential-osxkeychain

    se você receber a resposta a seguir, já a terá instalada e pronta para uso no seu mac:

    > Usage: git credential-osxkeychain <get|store|erase>

    se você não receber uma resposta como mostrado acima, poderá instalá-lo executando o seguinte comando:

    git credential-osxkeychain

  • para dizer ao git para usar globalmente o osxkeychain para credenciais do git:

    git config --global credential.helper osxkeychain

    Ele será solicitado uma vez antes de salvar credenciais no chaveiro .

Akash Gandhi
fonte