Actions

EmSys

Difference between revisions of "Git integration"

From EdWiki

(Created page with "__NOTOC__ === Plugins === We're going to be looking at 4 plugins that bring a good integrate git experience to Neovim <pre> Plug 'mhinz/vim-signify' Plug 'tpope/vim-fugitive...")
 
m (Commands)
 
Line 85: Line 85:
 
=== Commands ===
 
=== Commands ===
 
<pre>
 
<pre>
:Git add
+
:Git add
  
:Git commit
+
:Git commit
 
 
 
:Git push
 
:Git push

Latest revision as of 15:10, 23 February 2021

Plugins

We're going to be looking at 4 plugins that bring a good integrate git experience to Neovim

 Plug 'mhinz/vim-signify'
 Plug 'tpope/vim-fugitive' 
 Plug 'tpope/vim-rhubarb'
 Plug 'junegunn/gv.vim'

Create config files

touch ~/.config/nvim/plug-config/signify.vim


Make sure to source this file in init.vim

Configure Signify

Signify will show added, modified, or removed lines

From the documentation:

SIGNS                                                            *signify-signs*

    `+`     This line was added.

    `!`     This line was modified.
    `_1`    The number of deleted lines below this sign. If the number is larger
    `99`    than 9, the `_` will be omitted. For numbers larger than 99, `_>`
    `_>`    will be shown instead.
​
    `!1`    This line was modified and the lines below were deleted.
    `!>`    It is a combination of `!` and `_`. If the number is larger than 9,
          `!>` will be shown instead.

    `‾`     The first line was removed. It's a special case of the `_` sign.

​ See |g:signify_sign_add| on how to use different signs.


You can also stage and unstage hunks

Here's some config for changing the buffer signs

" Change these if you want
let g:signify_sign_add               = '+'
let g:signify_sign_delete            = '_'
let g:signify_sign_delete_first_line = '‾'
let g:signify_sign_change            = '~'
​
" I find the numbers disctracting
let g:signify_sign_show_count = 0
let g:signify_sign_show_text = 1

​" Jump though hunks
nmap <leader>gj <plug>(signify-next-hunk)
nmap <leader>gk <plug>(signify-prev-hunk)
nmap <leader>gJ 9999<leader>gJ
nmap <leader>gK 9999<leader>gk
​
" If you like colors instead
" highlight SignifySignAdd                  ctermbg=green                guibg=#00ff00
" highlight SignifySignDelete ctermfg=black ctermbg=red    guifg=#ffffff guibg=#ff0000
" highlight SignifySignChange ctermfg=black ctermbg=yellow guifg=#000000 guibg=#ffff00

Commands

Here are the commands I use:

:SignifyToggle
:SignifyToggleHighlight


There are more commands but I prefer the options fugitive and gv provide

Fugitive / Rhubarb

This plugin is what we'll use for interacting with git

Note GBrowse only works when Rhubarb is installed

Note Make sure you are using git through ssh not http

Commands

:Git add

:Git commit
​
:Git push
​
:Git pull
​
:Git diff

:Git log
​
:Git blame

Gdiffsplit

​GRemove
​
GBrowse

GV

Commands

From the readme: "A git commit browser."

To open commit browser:

:GV

You can pass git log options to the command, e.g. :GV -S foobar.

Other options

 :GV!         # will only list commits that affected the current file
 :GV?         # fills the location list with the revisions of the current file
 :GV          # or :GV? can be used in visual mode to track the changes in the selected lines.

Mappings

  • o or on a commit to display the content of it
  • o or on commits to display the diff in the range
  • O opens a new tab instead
  • gb for :Gbrowse
  • ]] and [[ to move between commits
  • . to start command-line with :Git [CURSOR] SHA à la fugitive
  • q or gq to close

Check out the repos here

signify

fugitive

rhubarb

gv