Is there a way to make git remember the password for WebDAV remotes?

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

UPDATE:

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.


Run this command inside your repo:

git config credential.helper store

Then push to the server once:

git push

The credentials you use to push to the server will get saved in ~/.git-credentials.

Instructions taken from this guide here.


Why can't you just use password in remote url?

$ git config remote.origin.url = http://username:password@origin_link.com/repository.git