diff --git a/runtime/ftplugin/git.vim b/runtime/ftplugin/git.vim
deleted file mode 100644
index 75b20f0..0000000
--- a/runtime/ftplugin/git.vim
+++ /dev/null
@@ -1,41 +0,0 @@
-" Vim filetype plugin
-" Language:	generic git output
-" Maintainer:	Tim Pope <vimNOSPAM@tpope.org>
-" Last Change:	2019 Dec 05
-
-" Only do this when not done yet for this buffer
-if (exists("b:did_ftplugin"))
-  finish
-endif
-let b:did_ftplugin = 1
-
-if !exists('b:git_dir')
-  if expand('%:p') =~# '[\/]\.git[\/]modules[\/]\|:[\/][\/]\|^\a\a\+:'
-    " Stay out of the way
-  elseif expand('%:p') =~# '[\/]\.git[\/]worktrees'
-    let b:git_dir = matchstr(expand('%:p'),'.*\.git[\/]worktrees[\/][^\/]\+\>')
-  elseif expand('%:p') =~# '\.git\>'
-    let b:git_dir = matchstr(expand('%:p'),'.*\.git\>')
-  elseif $GIT_DIR != ''
-    let b:git_dir = $GIT_DIR
-  endif
-  if (has('win32') || has('win64')) && exists('b:git_dir')
-    let b:git_dir = substitute(b:git_dir,'\\','/','g')
-  endif
-endif
-
-if exists('*shellescape') && exists('b:git_dir') && b:git_dir != ''
-  if b:git_dir =~# '/\.git$' " Not a bare repository
-    let &l:path = escape(fnamemodify(b:git_dir,':h'),'\, ').','.&l:path
-  endif
-  let &l:path = escape(b:git_dir,'\, ').','.&l:path
-  let &l:keywordprg = 'git --git-dir='.shellescape(b:git_dir).' show'
-else
-  setlocal keywordprg=git\ show
-endif
-if has('gui_running')
-  let &l:keywordprg = substitute(&l:keywordprg,'^git\>','git --no-pager','')
-endif
-
-setlocal includeexpr=substitute(v:fname,'^[^/]\\+/','','')
-let b:undo_ftplugin = "setl keywordprg< path< includeexpr<"
diff --git a/runtime/ftplugin/gitcommit.vim b/runtime/ftplugin/gitcommit.vim
index 9b1998a..9342799 100644
--- a/runtime/ftplugin/gitcommit.vim
+++ b/runtime/ftplugin/gitcommit.vim
@@ -1,66 +1,57 @@
 " Vim filetype plugin
 " Language:	git commit file
 " Maintainer:	Tim Pope <vimNOSPAM@tpope.org>
-" Last Change:	2019 Dec 05
+" Last Change:	2022 Jan 05
 
 " Only do this when not done yet for this buffer
 if (exists("b:did_ftplugin"))
   finish
 endif
 
-runtime! ftplugin/git.vim
 let b:did_ftplugin = 1
 
-setlocal comments=:# commentstring=#\ %s
 setlocal nomodeline tabstop=8 formatoptions+=tl textwidth=72
 setlocal formatoptions-=c formatoptions-=r formatoptions-=o formatoptions-=q formatoptions+=n
 setlocal formatlistpat+=\\\|^\\s*[-*+]\\s\\+
+setlocal include=^+++
+setlocal includeexpr=substitute(v:fname,'^[bi]/','','')
 
-let b:undo_ftplugin = 'setl modeline< tabstop< formatoptions< tw< com< cms< formatlistpat<'
+let b:undo_ftplugin = 'setl modeline< tabstop< formatoptions< tw< com< cms< formatlistpat< inc< inex<'
 
-if exists("g:no_gitcommit_commands") || v:version < 700
+let s:l = search('\C\m^[#;@!$%^&|:] -\{24,\} >8 -\{24,\}$', 'cnW', '', 100)
+let &l:comments = ':' . (matchstr(getline(s:l ? s:l : '$'), '^[#;@!$%^&|:]\S\@!') . '#')[0]
+let &l:commentstring = &l:comments[1] . ' %s'
+unlet s:l
+
+if exists("g:no_gitcommit_commands")
   finish
 endif
 
-if !exists("b:git_dir")
-  let b:git_dir = expand("%:p:h")
-endif
-
-command! -bang -bar -buffer -complete=custom,s:diffcomplete -nargs=* DiffGitCached :call s:gitdiffcached(<bang>0,b:git_dir,<f-args>)
+command! -bang -bar -buffer -complete=custom,s:diffcomplete -nargs=* DiffGitCached :call s:gitdiffcached(<bang>0, <f-args>)
 
 let b:undo_ftplugin = b:undo_ftplugin . "|delc DiffGitCached"
 
-function! s:diffcomplete(A,L,P)
+function! s:diffcomplete(A, L, P) abort
   let args = ""
   if a:P <= match(a:L." -- "," -- ")+3
     let args = args . "-p\n--stat\n--shortstat\n--summary\n--patch-with-stat\n--no-renames\n-B\n-M\n-C\n"
   end
-  if exists("b:git_dir") && a:A !~ '^-'
-    let tree = fnamemodify(b:git_dir,':h')
-    if strpart(getcwd(),0,strlen(tree)) == tree
-      let args = args."\n".system("git diff --cached --name-only")
-    endif
+  if a:A !~ '^-' && !empty(getftype('.git'))
+    let args = args."\n".system("git diff --cached --name-only")
   endif
   return args
 endfunction
 
-function! s:gitdiffcached(bang,gitdir,...)
-  let tree = fnamemodify(a:gitdir,':h')
+function! s:gitdiffcached(bang, ...) abort
   let name = tempname()
-  let git = "git"
-  if strpart(getcwd(),0,strlen(tree)) != tree
-    let git .= " --git-dir=".(exists("*shellescape") ? shellescape(a:gitdir) : '"'.a:gitdir.'"')
-  endif
   if a:0
-    let extra = join(map(copy(a:000),exists("*shellescape") ? 'shellescape(v:val)' : "'\"'.v:val.'\"'"))
+    let extra = join(map(copy(a:000), 'shellescape(v:val)'))
   else
     let extra = "-p --stat=".&columns
   endif
-  call system(git." diff --cached --no-color --no-ext-diff ".extra." > ".(exists("*shellescape") ? shellescape(name) : name))
-  exe "pedit ".(exists("*fnameescape") ? fnameescape(name) : name)
+  call system("git diff --cached --no-color --no-ext-diff ".extra." > ".shellescape(name))
+  exe "pedit " . fnameescape(name)
   wincmd P
-  let b:git_dir = a:gitdir
-  command! -bang -bar -buffer -complete=custom,s:diffcomplete -nargs=* DiffGitCached :call s:gitdiffcached(<bang>0,b:git_dir,<f-args>)
-  nnoremap <buffer> <silent> q :q<CR>
+  command! -bang -bar -buffer -complete=custom,s:diffcomplete -nargs=* DiffGitCached :call s:gitdiffcached(<bang>0, <f-args>)
   setlocal buftype=nowrite nobuflisted noswapfile nomodifiable filetype=git
 endfunction
diff --git a/runtime/ftplugin/gitrebase.vim b/runtime/ftplugin/gitrebase.vim
index 2fed53c..143f86a 100644
--- a/runtime/ftplugin/gitrebase.vim
+++ b/runtime/ftplugin/gitrebase.vim
@@ -1,22 +1,20 @@
 " Vim filetype plugin
 " Language:	git rebase --interactive
 " Maintainer:	Tim Pope <vimNOSPAM@tpope.org>
-" Last Change:	2019 Dec 05
+" Last Change:	2022 Jan 05
 
 " Only do this when not done yet for this buffer
 if (exists("b:did_ftplugin"))
   finish
 endif
 
-runtime! ftplugin/git.vim
 let b:did_ftplugin = 1
 
-setlocal comments=:# commentstring=#\ %s formatoptions-=t
+let &l:comments = ':' . (matchstr(getline('$'), '^[#;@!$%^&|:]\S\@!') . '#')[0]
+let &l:commentstring = &l:comments[1] . ' %s'
+setlocal formatoptions-=t
 setlocal nomodeline
-if !exists("b:undo_ftplugin")
-  let b:undo_ftplugin = ""
-endif
-let b:undo_ftplugin = b:undo_ftplugin."|setl com< cms< fo< ml<"
+let b:undo_ftplugin = "setl com< cms< fo< ml<"
 
 function! s:choose(word) abort
   s/^\(\w\+\>\)\=\(\s*\)\ze\x\{4,40\}\>/\=(strlen(submatch(1)) == 1 ? a:word[0] : a:word) . substitute(submatch(2),'^$',' ','')/e
@@ -41,8 +39,7 @@
   finish
 endif
 
-nnoremap <buffer> <expr> K col('.') < 7 && expand('<Lt>cword>') =~ '\X' && getline('.') =~ '^\w\+\s\+\x\+\>' ? 'wK' : 'K'
 nnoremap <buffer> <silent> <C-A> :<C-U><C-R>=v:count1<CR>Cycle<CR>
 nnoremap <buffer> <silent> <C-X> :<C-U><C-R>=v:count1<CR>Cycle!<CR>
 
-let b:undo_ftplugin = b:undo_ftplugin . "|exe 'nunmap <buffer> K'|exe 'nunmap <buffer> <C-A>'|exe 'nunmap <buffer> <C-X>'"
+let b:undo_ftplugin = b:undo_ftplugin . "|exe 'nunmap <buffer> <C-A>'|exe 'nunmap <buffer> <C-X>'"
