Como inserir comando com senha para git pull?

139

Eu quero fazer este comando em uma linha:

git pull && [my passphrase]

Como fazer isso?

Anton Medvedev
fonte
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.

eis
fonte
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.)

holgero
fonte
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: [email protected]/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.

Jivan
fonte
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.
VonC
fonte
0

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

Sagar Deshmukh
fonte