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.