Bash Completion not working?

In the first example, the command name is completed with the completion script and there are two suggestions.

In the second example, there’s nothing to complete - the command name is already given (git) and you’ve given it one parameter. Pressing Tab does nothing as there’s no ambiguous command to complete.

I use fish and it has more robust completion, which I suspect is what you’re after. For example, typing git and pressing tab offers the last parameter to git that I used and also all other appropriate parameters, along with their description; I can move around the list or continue typing after being given the reminder of what could come next.

┌─🎩 lurcher rlencoder on  master [!+] +33−3
├─via 🦀 v1.94.0-beta.3 pkg 📦 v0.1.0
└─➜ git status                                                                                                                                              12:34 Fri 20-Feb
add                   (Add file contents to the staging area)  merge                              (Join multiple development histories)
am                             (Apply patches from a mailbox)  mergetool                           (Run merge conflict resolution tool)
apply                                         (Apply a patch)  merge-base                          (Find a common ancestor for a merge)
archive              (Create an archive of files from a tree)  mv                                               (Move or rename a file)
bisect      (Use binary search to find what introduced a bug)  notes                                      (Add or inspect object notes)
blame           (Show what last modified each line of a file)  prune                      (Prune unreachable objects from the database)
branch                     (List, create, or delete branches)  pull                  (Fetch from and merge with another repo or branch)
bundle        (Create, unpack, and manipulate "bundle" files)  push                                            (Push changes elsewhere)
checkout                    (Checkout and switch to a branch)  range-diff                                   (Compare two commit ranges)
cherry           (Find commits yet to be applied to upstream)  rebase                           (Reapply commit sequence on a new base)
cherry-pick              (Reapply a commit on another branch)  reflog                                       (Manage reflog information)
clean          (Remove untracked files from the working tree)  remote                                     (Manage tracked repositories)
clone               (Clone a repository into a new directory)  reset                        (Reset current HEAD to the specified state)
commit                     (Record changes to the repository)  restore                                     (Restore working tree files)
config             (Set and read git configuration variables)  revert                                       (Revert an existing commit)
count-objects  (Count number of objects and disk consumption)  rev-list                           (List commits in chronological order)
daemon                 (A simple server for git repositories)  rev-parse                (Parse revision names or give repo information)
describe               (Give an object a human readable name)  rm              (Remove files from the working tree and/or staging area)
…and 15 more rows