Note (November 2013)
Encoding the url (especially any special character in a password) is the right solution.
The .netrc mentioned below is only for remote repo url, not for the proxy used to resolve said remote repo url.
For said encoding, see "Percent-encoding":
Percent-encoding, also known as URL encoding, is a mechanism for encoding information in a Uniform Resource Identifier (URI) under certain circumstances. Although it is known as URL encoding it is, in fact, used more generally within the main Uniform Resource Identifier (URI) set, which includes both Uniform Resource Locator (URL) and Uniform Resource Name (URN). As such, it is also used in the preparation of data of the application/x-www-form-urlencoded media type, as is often used in the submission of HTML form data in HTTP requests.
Reserved characters after percent-encoding:
!   #   $    &   '   (   )   *   +   ,   /   :   ;   =   ?   @   [   ]
%21 %23 %24 %26 %27 %28 %29 %2A %2B %2C %2F %3A %3B %3D %3F %40 %5B %5D
Original answer (May 2011)
Two comments:
- having a password for a server accessed with http (not https) is... strange. The password isn't encrypted during communications between client and server; 
- you could setup a - .netrc(or- _netrcfor Windows) in your- $HOME, with the following content
 
    machine ipaddress:port
    login userId
    password pwd@
The curl used by Git bbehind the scene would handle the encoding just fine, @ or no @.