return { 'tpope/vim-fugitive', -- set git status remap vim.keymap.set('n', 'gs', vim.cmd.Git, { desc = 'Start git buffer and check status' }), vim.keymap.set('n', 'dv', ':Gvdiffsplit!', { desc = 'Diff split against HEAD vertical' }), vim.keymap.set('n', 'dh', ':Gdiffsplit!', { desc = 'Diff split against HEAD horizontal' }), vim.keymap.set('n', 'dt', ':windo diffthis', { desc = 'Diff files in all windows' }), vim.keymap.set('n', 'dm', ':Gdiff!', { desc = 'On conflicted file opens a 3-way diff' }), vim.keymap.set('n', '2', ':diffget //2 | diffupdate', { desc = 'On the middle file get the diff from Head' }), vim.keymap.set('n', '3', ':diffget //3 | diffupdate', { desc = 'On the middle file get the diff from the other branch' }), vim.keymap.set('n', 'do', ':diffo!', { desc = 'Turn off diff mode' }), -- Autocmd('BufWinEnter', { group = Fugitive, pattern = '*', callback = function() if vim.bo.ft ~= 'fugitive' then return end local bufnr = vim.api.nvim_get_current_buf() local opts = { buffer = bufnr, remap = false } vim.keymap.set('n', 'gc', function() vim.cmd.Git 'commit' end) vim.keymap.set('n', 'p', function() vim.cmd.Git 'push' end, opts) -- rebase always vim.keymap.set('n', 'P', function() vim.cmd.Git { 'pull', '--rebase' } end, opts) -- NOTE: It allows me to easily set the branch i am pushing and any tracking -- needed if i did not set the branch up correctly vim.keymap.set('n', 't', ':Git push -u origin ', opts) end, }), }