nnoremap <Leader>ga :Git add %<CR>
nnoremap <Leader>gA :Git reset HEAD %<CR>
xnoremap <Leader>gb :Git blame<CR>
nnoremap <Leader>gb :Git branch -a<CR>
nnoremap <Leader>gB :Git branch<SPACE>
nnoremap <Leader>gc :Git checkout -b<SPACE>
nnoremap <Leader>gC :Git checkout<SPACE>
nnoremap <Leader>gd :Ghdiffsplit!<CR>
nnoremap <Leader>gD :Gvdiffsplit!<CR>
nnoremap <Leader>ge :sp<CR>:Gedit HEAD~:%<Left><Left>
nnoremap <Leader>gE :sp<CR>:Gedit :%:p<Left><Left><Left><Left>
nnoremap <Leader>gf :Git fetch --all<CR>
nnoremap <Leader>gF :call git#git_fetch_origin_merge()<CR>
nnoremap <Leader>gg :Git<CR>
nnoremap <Leader>gh :Git log --grep=
nnoremap <Leader>gH :<C-U>Git log -G<C-r><C-w>
nnoremap <Leader>gl :Git log --stat %<CR>
nnoremap <Leader>gL :Git log --stat -n 100<CR>
xnoremap <Leader>gl :<C-U>call git#git_log_range()<CR>
xnoremap <Leader>gL :call git#git_log_named_block()<CR>
nnoremap <Leader>gm :0,3Git blame<CR>
nnoremap <Leader>gM :call git#git_merge_origin()<CR>
nnoremap <Leader>gn :Git branch -m<SPACE>
nnoremap <Leader>go :call git#git_log_compare()<CR>
nnoremap <Leader>gr :call git#git_rebase_origin()<CR>
nnoremap <Leader>gR :Git rebase --abort<CR>
nnoremap <Leader>g- :Git stash<CR>:e<CR>
nnoremap <Leader>g+ :Git stash pop<SPACE>
nnoremap <Leader>gs :Git stash list<CR>
nnoremap <Leader>gS :Git stash -- %<CR>
nnoremap <Leader>gt :Git reflog<CR>
xnoremap <Leader>gu :GBrowse!<CR>
xnoremap <Leader>gU :GBrowse<CR>
nnoremap <Leader>gu :norm 0v$<CR>:GBrowse<CR>
nnoremap <Leader>gw :Gwrite<CR>
nnoremap <Leader>G  :Git<SPACE>

nnoremap <Leader>gp :call git#git_push_to_upstream()<CR>
nnoremap <expr> <Leader>gP git#git_push()

augroup custom_fugitive
  autocmd!
  autocmd FileType fugitive,fugitiveblame nnoremap <buffer><silent> q :bwipeout!<CR>
  autocmd BufReadPost fugitive:// setlocal bufhidden=wipe
augroup END
