Subject: [PATCH v2] completion: complete "git -<TAB>" with short options

From: "Wiktor Mis via GitGitGadget" <[email-masked]>
Date: Wed, 26 Nov 2025 16:26:31 +0000

From: Wiktor Mis <[email-masked]>

"git" itself has completion for long options and cmds, but not short ones

Signed-off-by: Wiktor Mis <[email-masked]>
---
    Add completion for short options

Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-2100%2FWiktorro%2Fpatch-3-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-2100/Wiktorro/patch-3-v2
Pull-Request: https://github.com/git/git/pull/2100

Range-diff vs v1:

 1:  1b15a0b458 ! 1:  e6161ffe3b Add completion for short options
     @@ Metadata
      Author: Wiktor Mis <[email-masked]>
      
       ## Commit message ##
     -    Add completion for short options
     +    completion: complete "git -<TAB>" with short options
      
     -    Git provided completion for long options but not the short ones
     +    "git" itself has completion for long options and cmds, but not short ones
      
          Signed-off-by: Wiktor Mis <[email-masked]>
      
       ## contrib/completion/git-completion.bash ##
      @@ contrib/completion/git-completion.bash: __git_main ()
     - 			--help
     - 			"
       			;;
     + 		esac
     + 		case "$cur" in
     +-		--*)
      +		-*)
     -+			__gitcomp "
     + 			__gitcomp "
     + 			--paginate
     + 			--no-pager
     +@@ contrib/completion/git-completion.bash: __git_main ()
     + 			--namespace=
     + 			--no-replace-objects
     + 			--help
      +			-C
      +			-P
      +			-c
      +			-h
      +			-p
      +			-v
     -+			"
     -+			;;
     + 			"
     + 			;;
       		*)
     - 			if test -n "${GIT_TESTING_PORCELAIN_COMMAND_LIST-}"
     - 			then

 contrib/completion/git-completion.bash | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index 73abea31b4..1705ca3323 100644
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -3898,7 +3898,7 @@ __git_main ()
 			;;
 		esac
 		case "$cur" in
-		--*)
+		-*)
 			__gitcomp "
 			--paginate
 			--no-pager
@@ -3914,6 +3914,12 @@ __git_main ()
 			--namespace=
 			--no-replace-objects
 			--help
+			-C
+			-P
+			-c
+			-h
+			-p
+			-v
 			"
 			;;
 		*)

base-commit: fd372d9b1a69a01a676398882bbe3840bf51fe72
-- 
gitgitgadget