Como inserir o comando com senha para git pull?

Eu quero fazer este comando em uma linha: git pull && [my passphrase]

Como fazer isso?

Isso não é exatamente o que você pediu, mas para http (s):

  • você pode colocar a senha no arquivo .netrc (_netrc no windows). De lá, ele seria retirado automaticamente. Ele iria para sua pasta pessoal com 600 permissions.
  • você também pode simplesmente clonar o repository com https://user:pass@domain/repo mas isso não é realmente recomendado, já que ele mostraria seu usuário / passaria em muitos lugares …
  • uma nova opção é usar o auxiliar de credencial . Observe que as credenciais seriam armazenadas em texto não criptografado em sua configuração local usando o auxiliar de credencial padrão. credencial-ajudante com wincred também pode ser usado no windows.

Exemplos de uso para o auxiliar de credencial

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

Para o access baseado em ssh, você usaria o agente ssh que fornecerá a chave ssh quando necessário. Isso exigiria a geração de chaves em seu computador, o armazenamento da chave pública no servidor remoto e a adição da chave privada ao keystore relevante.

Eu encontrei uma maneira de fornecer credenciais para uma conexão https na linha de comando. Você só precisa especificar o URL completo para git pull e include as credenciais lá:

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

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

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

Bem, o git permite armazenar suas credenciais em cache por um período de tempo finito. É personalizável em git config e 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 fazer:

 $ 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 memory pelo tempo solicitado.

Note que a maneira como o git credential helper “store” armazenará as alterações de senhas não criptografadas com o Git 2.5+ (Q2 2014).
Veja commit 17c7f4d de Junio ​​C Hamano ( gitster )

credential-xdg

Ajuste o backend de ” store ” de amostra do auxiliar de credencial para honrar os locais do arquivo de configuração XDG quando especificado.

O doc agora diz:

Se não especificado:

  • as credenciais serão procuradas de ~/.git-credentials e $XDG_CONFIG_HOME/git/credentials , e
  • as credenciais serão gravadas em ~/.git-credentials se existirem, ou $XDG_CONFIG_HOME/git/credentials se existirem, e o primeiro não.