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.



@ 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


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://username@repository-url.com

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 nome@gitlab.com E nome%40mailaddress.com@gitlab.com - 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://USERNAME@github.com': <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

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 git@github.com:um URL remoto:

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

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

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 git@gitlab.com: 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

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:password@repository-url.com

1
E se houver @incluído na minha senha? url = https://username:abc@123@repository-url.comEstá me dando um erro de que:Could not resolve host: @123@git.com
— 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")


16

Alterar o repositório clonado funciona:

git remote set-url origin git@github.com: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).


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.


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


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>

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.


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

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


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 user_name@example.gitrepo.com/my_repo.git


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://git@github.com/.insteadOf https://github.com/

url.<base>.insteadOfestá documentado aqui .


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.


1

Você pode simplesmente correr

git config --global credential.helper wincred

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


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 .

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.