return { 'tpope/vim-fugitive', config = function() vim.keymap.set('n', 'gs', vim.cmd.Git) local jfraeys_fugitive = vim.api.nvim_create_augroup('jfraeys_fugitive', {}) local autocmd = vim.api.nvim_create_autocmd autocmd('BufWinEnter', { group = jfraeys_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', '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, }) vim.keymap.set('n', 'gu', 'diffget //2') vim.keymap.set('n', 'gh', 'diffget //3') end, cond = function() -- Function to check if the current directory is a Git repository local is_git_repo = function() local git_dir = vim.fn.finddir('.git', '.;') return git_dir and #git_dir > 0 end return is_git_repo() end, }