From a Bash script I would like to supply a password. I have tried the following:
echo 'mypass' | git pull
git pull < 'mypass'
git pull < echo 'mypass'
None seem to work.
From a Bash script I would like to supply a password. I have tried the following:
echo 'mypass' | git pull
git pull < 'mypass'
git pull < echo 'mypass'
None seem to work.
Create file git_password.sh with content:
#!/bin/sh
exec echo "$GIT_PASSWORD"
Assign your password to the GIT_PASSWORD environment variable
$ GIT_PASSWORD=your_password
Execute git command with GIT_ASKPASS environment variable. It will force password prompt and execute git_password.sh as callback:
$ GIT_ASKPASS=./git_password.sh git clone $REPO
gitcredentials is the answer:
DESCRIPTION
Git will sometimes need credentials from the user in order to perform operations; for example, it may need to ask for a username and password in order to access a remote repository over HTTP. This manual describes the mechanisms Git uses to request these credentials, as well as some features to avoid inputting these credentials repeatedly.
[...]
REQUESTING CREDENTIALS
Without any credential helpers defined, Git will try the following strategies to ask the user for usernames and passwords:
- If the
GIT_ASKPASSenvironment variable is set, the program specified by the variable is invoked. A suitable prompt is provided to the program on the command line, and the user’s input is read from its standard output.- Otherwise, if the
core.askPassconfiguration variable is set, its value is used as above.- Otherwise, if the
SSH_ASKPASSenvironment variable is set, its value is used as above.- Otherwise, the user is prompted on the terminal.
[...]
Credential helpers, on the other hand, are external programs from which Git can request both usernames and passwords; they typically interface with secure storage provided by the OS or other programs.
You may also have third-party helpers installed; search for
credential-*in the output ofgit help -a, and consult the documentation of individual helpers. Once you have selected a helper, you can tell Git to use it by putting its name into thecredential.helpervariable.
git help -a | grep credential-* shows the following helper:
credential remote
credential-cache remote-ext
credential-cache--daemon remote-fd
credential-osxkeychain remote-ftp
credential-store remote-ftps
It is possible to include the password in the definition of your remote like so:
https://user:password@server
Like this you do not need to provide it for each pull.
(Much like the solution suggested in How do I provide a username and password when running “git clone git@remote.git”?.)
Warning: A better approach would be to use SSH instead of HTTPS and store your public key with GitHub. Because credentials in the remote url might land in the command history, scripts or configuration files and can then be seen by others.
The main techniques for feeding an input to a Bash scripts are at "Automatically enter input in command line":
echo 'mypass' | git pull
# or
printf 'mypass\n' | git pull
Since Git 1.8.3, I prefer using a Git credential netrc helper which will fetch and feed the right password for me.