What I like to do is set two Git aliases:
~/.gitconfig
[alias]
        noproxy = config --global --remove-section http
        proxy = config --global http.proxy http://127.0.0.1:9666
Note that I didn't use config --global --unset http.proxy to reset the proxy because that leaves behind the [http] section heading, so after repeatedly enabling and disabling the proxy your .gitconfig will be polluted with a bunch of empty [http] section headings. No big deal, but it's just annoying.
In some cases, such as behind corporate firewalls, you need to configure ~/.ssh/config instead. The setup becomes slightly more complicated:
~/.gitconfig
[alias]
        noproxy = !sh -c 'cp ~/.ssh/config.noproxy ~/.ssh/config'
        proxy = !sh -c 'cp ~/.ssh/config.proxy ~/.ssh/config'
~/.ssh/config.noproxy
Host github.com-username
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa
~/.ssh/config.proxy
Host *
  ProxyCommand connect -H 127.0.0.1:9666 %h %p
Host github.com-username
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa
You can even combine the two methods by changing the aliases to this:
[alias]
        noproxy = !sh -c 'git config --global --remove-section http 2> /dev/null && cp ~/.ssh/config.noproxy ~/.ssh/config'
        proxy = !sh -c 'git config --global http.proxy http://127.0.0.1:9666 && cp ~/.ssh/config.proxy ~/.ssh/config'
Now I can simply type git noproxy to disable the proxy and git proxy to enable it. You can even switch among multiple proxies by creating more aliases.