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.