Git comes with a massive bunch of (sub)commands and even if you're dealing with git on a daily basis, you might not always remember every single one you need along the way. Having bash completion for git is already a good start (type git, a space and then tab), but this is only a subset with the higher level commands.

If you also need lower level commands (or don't have bash completion), try

git help --all

which will render a list of available commands, like:

available git commands in '/opt/local/libexec/git-core'
-------------------------------------------------------
  add                fast-import        merge-recursive    reset
  add--interactive   fetch              merge-resolve      rev-list
  am                 fetch-pack         merge-subtree      rev-parse
  annotate           filter-branch      merge-tree         revert
  apply              fmt-merge-msg      mergetool          rm
  archimport         for-each-ref       mktag              send-email
  archive            format-patch       mktree             send-pack
  bisect             fsck               mv                 sh-i18n--envsubst
  bisect--helper     fsck-objects       name-rev           shell
  blame              gc                 notes              shortlog
  branch             get-tar-commit-id  pack-objects       show
  bundle             grep               pack-redundant     show-branch
  cat-file           gui                pack-refs          show-index
  check-attr         gui--askpass       patch-id           show-ref
  check-ref-format   hash-object        peek-remote        stage
  checkout           help               prune              stash
  checkout-index     http-backend       prune-packed       status
  cherry             http-fetch         pull               stripspace
  cherry-pick        http-push          push               submodule
  citool             imap-send          quiltimport        svn
  clean              index-pack         read-tree          symbolic-ref
  clone              init               rebase             tag
  commit             init-db            receive-pack       tar-tree
  commit-tree        instaweb           reflog             unpack-file
  config             log                relink             unpack-objects
  count-objects      lost-found         remote             update-index
  cvsexportcommit    ls-files           remote-ext         update-ref
  cvsimport          ls-remote          remote-fd          update-server-info
  cvsserver          ls-tree            remote-ftp         upload-archive
  daemon             mailinfo           remote-ftps        upload-pack
  describe           mailsplit          remote-http        var
  diff               merge              remote-https       verify-pack
  diff-files         merge-base         remote-testgit     verify-tag
  diff-index         merge-file         repack             web--browse
  diff-tree          merge-index        replace            whatchanged
  difftool           merge-octopus      repo-config        write-tree
  difftool--helper   merge-one-file     request-pull
  fast-export        merge-ours         rerere