Como inserir comando com senha para git pull?


139

Eu quero fazer este comando em uma linha:

git pull && [my passphrase]

Como fazer isso?


você pode mudar sua senha para estar vazio, seguindo este: help.github.com/articles/working-with-ssh-key-passphrases
— jacerate

1
Você pode evitar a necessidade de digitar uma senha se executar o agente ssh. Na primeira vez em que você executa um git pull, você o faz de maneira interativa, e o agente ssh lembrará sua chave privada e você poderá executar o git pull sem ser solicitado.
— precisa

Respostas:


161

Não é exatamente isso que você solicitou, mas http (s):

  • você pode colocar a senha no arquivo .netrc (_netrc no Windows). A partir daí, seria captado automaticamente. Iria para a sua pasta pessoal com 600 permissões.
  • você também pode clonar o repositório com https://user:pass@domain/repo mas isso não é realmente recomendado, pois mostraria seu usuário / passe em muitos lugares ...
  • uma nova opção é usar o auxiliar de credencial . Observe que as credenciais seriam armazenadas em texto não criptografado na sua configuração local usando o auxiliar de credencial padrão. O auxiliar de credenciais com wincred também pode ser usado no Windows.

Exemplos de uso para auxiliar de credenciais

  • git config credential.helper store - armazena as credenciais indefinidamente.
  • git config credential.helper 'cache --timeout=3600'- armazena por 60 minutos

Para acesso baseado em ssh, você usaria o agente ssh que fornecerá a chave ssh quando necessário. Isso exigiria gerar chaves no seu computador, armazenar a chave pública no servidor remoto e adicionar a chave privada ao keystore relevante.


1
Você pode elaborar sobre a parte SSH? Estou configurando uma instância do EC2 e gostaria que ela fosse retirada sem solicitar minha senha e a escala automática da AWS. Esse esquema público / privado parece uma boa solução.
— Pedro Dusso 21/04/2015

1
@PedroDusso soa como esta discussão é o que você está depois
— eis

2
Eu terminei usando o mecanismo de implantação de chaves, que parece ser uma boa solução. Obrigado!
— Pedro Dusso

129

Encontrei uma maneira de fornecer credenciais para uma conexão https na linha de comando. Você só precisa especificar o URL completo para o git pull e incluir as credenciais:

git pull https://username:password@mygithost.com/my/repository

Você não precisa ter o repositório clonado com as credenciais antes, isso significa que suas credenciais não acabam .git/config. (Mas verifique se o seu shell não o trai e armazena a linha de comando em um arquivo de histórico.)


senha não são necessários, e isso é não segura a senha de gravação desta maneira
— meteoro

Essa não é uma das coisas que listei na resposta aceita, já em 2012?
— eis

8
@eis: Não exatamente. O ponto é que você não precisa clonar o repositório com a URL que inclui as credenciais, mas ainda pode extrair da URL com credenciais. O efeito é que as credenciais não acabam no arquivo .git / config.
— holgero

5
Se você omitir a :passwordpeça, será solicitada a senha após pressionar Enter. Dessa forma, sua senha não será salva no histórico do bash.
— Matthias Fischer

1
Sim uso @PramodGarg - git pull usuário: password@mygithost.com/my/repository.git Filial
— Pavitra

39

Não responde diretamente à pergunta, mas eu a encontrei ao procurar uma maneira de, basicamente, não redigitar a senha toda vez que puxo um servidor remoto .

Bem, gitpermite armazenar em cache suas credenciais por um período finito de tempo. É personalizável git confige esta página explica muito bem:

https://help.github.com/articles/caching-your-github-password-in-git/#platform-linux

Em um terminal, execute:

$ git config --global credential.helper cache
# Set git to use the credential memory cache

Para personalizar o tempo limite do cache, você pode:

$ git config --global credential.helper 'cache --timeout=3600'
# Set the cache to timeout after 1 hour (setting is in seconds)

Suas credenciais serão armazenadas na memória pelo período solicitado.


5

Observe que a maneira como o assistente de credencial do git "armazena" as senhas não criptografadas muda com o Git 2.5+ (Q2 2014).
Veja commit 17c7f4d por Junio ​​C Hamano ( gitster)

credential-xdg

Ajuste o " store" back-end de amostra do auxiliar de credencial para honrar os locais do arquivo de configuração do XDG, quando especificado.

O documento agora diz:

Se não especificado:

  • as credenciais serão pesquisadas a partir ~/.git-credentialse$XDG_CONFIG_HOME/git/credentials , e
  • as credenciais serão gravadas ~/.git-credentialsse existirem ou $XDG_CONFIG_HOME/git/credentialsse existirem e as primeiras não existirem.

0

Abaixo, o cmd funcionará se não tivermos uma senha @ in: git pull https://username:pass@word@mygithost.com/my/repository Se você tiver uma senha @ in, substitua-a por% 40, como mostrado abaixo: git pull https://username:pass%40word@mygithost.com/my/repository

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.