I'm working with Git pushing changes to a repository shared over HTTP / WebDAV, and Git prompts for a password for every operation that accesses the HTTP remote. Is there any way to make Git cache the password / have the remote server not prompt me?
The remote webserver should be an Apache and could possibly be reconfigured if necessary.
The way is to use ~/.netrc as outlined in step 3 of this Git documentation:
Then, add the following to your $HOME/.netrc (you can do without, but will be asked to input your password a lot of times):
machine <servername> login <username> password <password>
...and set permissions:
chmod 600 ~/.netrc
As of git 1.7.9, it seems the way to go would be the native credential helper API. Git comes with a plaintext credential store or a less convenient but more secure temporary credential cache. It's also possible to use third-party credential helpers. So far I'm aware of a helper for the native Windows Credential Store, and one that integrates with the OS X keychain. (The Git build shipped by Homebrew has a binary for it, as might other OS X Git distributions. Github also provides a standalone binary.)
Generally, it should be sufficient to set up the a credential helper once:
git config --global credential.helper wincred
Or instead of wincred
, use whichever helper is appropriate for your platform. (If the name of the helper executable is git-credential-wincred
, the value you set the option to will be wincred
, etc.)
The credential helpers also support the need to have separate sets of credentials for different repositories on the same host.