2 # bash completion support for core Git.
4 # Copyright (C) 2006,2007 Shawn O. Pearce <spearce@spearce.org>
5 # Conceptually based on gitcompletion (http://gitweb.hawaga.org.uk/).
6 # Distributed under the GNU General Public License, version 2.0.
8 # The contained completion routines provide support for completing:
10 # *) local and remote branch names
11 # *) local and remote tag names
12 # *) .git/remotes file names
13 # *) git 'subcommands'
14 # *) tree paths within 'ref:path/to/file' expressions
15 # *) common --long-options
17 # To use these routines:
19 # 1) Copy this file to somewhere (e.g. ~/.git-completion.sh).
20 # 2) Added the following line to your .bashrc:
21 # source ~/.git-completion.sh
23 # 3) You may want to make sure the git executable is available
24 # in your PATH before this script is sourced, as some caching
25 # is performed while the script loads. If git isn't found
26 # at source time then all lookups will be done on demand,
27 # which may be slightly slower.
29 # 4) Consider changing your PS1 to also show the current branch:
30 # PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '
32 # The argument to __git_ps1 will be displayed only if you
33 # are currently in a git repository. The %s token will be
34 # the name of the current branch.
38 # *) Read Documentation/SubmittingPatches
39 # *) Send all patches to the current maintainer:
41 # "Shawn O. Pearce" <spearce@spearce.org>
43 # *) Always CC the Git mailing list:
51 if [ -n "$__git_dir" ]; then
53 elif [ -d .git
]; then
56 git rev-parse
--git-dir 2>/dev
/null
58 elif [ -d "$1/.git" ]; then
67 local b
="$(git symbolic-ref HEAD 2>/dev/null)"
70 printf "$1" "${b##refs/heads/}"
72 printf " (%s)" "${b##refs/heads/}"
79 local all c s
=$
'\n' IFS
=' '$
'\t'$
'\n'
80 local cur
="${COMP_WORDS[COMP_CWORD]}"
86 --*=*) all
="$all$c$4$s" ;;
87 *.
) all
="$all$c$4$s" ;;
88 *) all
="$all$c$4 $s" ;;
92 COMPREPLY
=($
(compgen
-P "$2" -W "$all" -- "$cur"))
98 local cmd i is_hash
=y dir
="$(__gitdir "$1")"
99 if [ -d "$dir" ]; then
100 for i
in $
(git
--git-dir="$dir" \
101 for-each-ref
--format='%(refname)' \
103 echo "${i#refs/heads/}"
107 for i
in $
(git-ls-remote
"$1" 2>/dev
/null
); do
108 case "$is_hash,$i" in
111 n
,refs
/heads
/*) is_hash
=y
; echo "${i#refs/heads/}" ;;
112 n
,*) is_hash
=y
; echo "$i" ;;
119 local cmd i is_hash
=y dir
="$(__gitdir "$1")"
120 if [ -d "$dir" ]; then
121 for i
in $
(git
--git-dir="$dir" \
122 for-each-ref
--format='%(refname)' \
124 echo "${i#refs/tags/}"
128 for i
in $
(git-ls-remote
"$1" 2>/dev
/null
); do
129 case "$is_hash,$i" in
132 n
,refs
/tags
/*) is_hash
=y
; echo "${i#refs/tags/}" ;;
133 n
,*) is_hash
=y
; echo "$i" ;;
140 local cmd i is_hash
=y dir
="$(__gitdir "$1")"
141 if [ -d "$dir" ]; then
142 if [ -e "$dir/HEAD" ]; then echo HEAD
; fi
143 for i
in $
(git
--git-dir="$dir" \
144 for-each-ref
--format='%(refname)' \
145 refs
/tags refs
/heads refs
/remotes
); do
147 refs
/tags
/*) echo "${i#refs/tags/}" ;;
148 refs
/heads
/*) echo "${i#refs/heads/}" ;;
149 refs
/remotes
/*) echo "${i#refs/remotes/}" ;;
155 for i
in $
(git-ls-remote
"$dir" 2>/dev
/null
); do
156 case "$is_hash,$i" in
159 n
,refs
/tags
/*) is_hash
=y
; echo "${i#refs/tags/}" ;;
160 n
,refs
/heads
/*) is_hash
=y
; echo "${i#refs/heads/}" ;;
161 n
,refs
/remotes
/*) is_hash
=y
; echo "${i#refs/remotes/}" ;;
162 n
,*) is_hash
=y
; echo "$i" ;;
170 for i
in $
(__git_refs
"$1"); do
175 __git_refs_remotes
()
177 local cmd i is_hash
=y
178 for i
in $
(git-ls-remote
"$1" 2>/dev
/null
); do
179 case "$is_hash,$i" in
182 echo "$i:refs/remotes/$1/${i#refs/heads/}"
186 n
,refs
/tags
/*) is_hash
=y
;;
194 local i ngoff IFS
=$
'\n' d
="$(__gitdir)"
195 shopt -q nullglob || ngoff
=1
197 for i
in "$d/remotes"/*; do
198 echo ${i#$d/remotes/}
200 [ "$ngoff" ] && shopt -u nullglob
201 for i
in $
(git
--git-dir="$d" config
--list); do
211 __git_merge_strategies
()
213 if [ -n "$__git_merge_strategylist" ]; then
214 echo "$__git_merge_strategylist"
217 sed -n "/^all_strategies='/{
218 s/^all_strategies='//
222 }" "$(git --exec-path)/git-merge"
224 __git_merge_strategylist
=
225 __git_merge_strategylist
="$(__git_merge_strategies 2>/dev/null)"
227 __git_complete_file
()
229 local pfx
ls ref cur
="${COMP_WORDS[COMP_CWORD]}"
245 COMPREPLY
=($
(compgen
-P "$pfx" \
246 -W "$(git --git-dir="$
(__gitdir
)" ls-tree "$ls" \
247 | sed '/^100... blob /s,^.* ,,
256 __gitcomp
"$(__git_refs)"
261 __git_complete_revlist
()
263 local pfx cur
="${COMP_WORDS[COMP_CWORD]}"
268 __gitcomp
"$(__git_refs)" "$pfx" "$cur"
273 __gitcomp
"$(__git_refs)" "$pfx" "$cur"
279 __gitcomp
"$(__git_refs)"
286 if [ -n "$__git_commandlist" ]; then
287 echo "$__git_commandlist"
291 for i
in $
(git
help -a|
egrep '^ ')
294 add--interactive
) : plumbing
;;
295 applymbox
) : ask gittus
;;
296 applypatch
) : ask gittus
;;
297 archimport
) : import
;;
298 cat-file
) : plumbing
;;
299 check-attr
) : plumbing
;;
300 check-ref-format
) : plumbing
;;
301 commit-tree
) : plumbing
;;
302 cvsexportcommit
) : export;;
303 cvsimport
) : import
;;
304 cvsserver
) : daemon
;;
306 diff-files
) : plumbing
;;
307 diff-index
) : plumbing
;;
308 diff-tree
) : plumbing
;;
309 fast-import
) : import
;;
310 fsck-objects
) : plumbing
;;
311 fetch--tool
) : plumbing
;;
312 fetch-pack
) : plumbing
;;
313 fmt-merge-msg
) : plumbing
;;
314 for-each-ref
) : plumbing
;;
315 hash-object
) : plumbing
;;
316 http-
*) : transport
;;
317 index-pack
) : plumbing
;;
318 init-db
) : deprecated
;;
319 local-fetch
) : plumbing
;;
320 mailinfo
) : plumbing
;;
321 mailsplit
) : plumbing
;;
322 merge-
*) : plumbing
;;
325 pack-objects
) : plumbing
;;
326 pack-redundant
) : plumbing
;;
327 pack-refs
) : plumbing
;;
328 parse-remote
) : plumbing
;;
329 patch-id
) : plumbing
;;
330 peek-remote
) : plumbing
;;
332 prune-packed
) : plumbing
;;
333 quiltimport
) : import
;;
334 read-tree
) : plumbing
;;
335 receive-pack
) : plumbing
;;
337 repo-config
) : plumbing
;;
339 rev-list
) : plumbing
;;
340 rev-parse
) : plumbing
;;
341 runstatus
) : plumbing
;;
342 sh-setup
) : internal
;;
344 send-pack
) : plumbing
;;
345 show-index
) : plumbing
;;
347 stripspace
) : plumbing
;;
348 svn
) : import
export;;
349 symbolic-ref
) : plumbing
;;
350 tar-tree
) : deprecated
;;
351 unpack-file
) : plumbing
;;
352 unpack-objects
) : plumbing
;;
353 update-index
) : plumbing
;;
354 update-ref
) : plumbing
;;
355 update-server-info
) : daemon
;;
356 upload-archive
) : plumbing
;;
357 upload-pack
) : plumbing
;;
358 write-tree
) : plumbing
;;
359 verify-tag
) : plumbing
;;
365 __git_commandlist
="$(__git_commands 2>/dev/null)"
370 for i
in $
(git
--git-dir="$(__gitdir)" config
--list); do
380 __git_aliased_command
()
382 local word cmdline
=$
(git
--git-dir="$(__gitdir)" \
383 config
--get "alias.$1")
384 for word
in $cmdline; do
385 if [ "${word##-*}" ]; then
392 __git_whitespacelist
="nowarn warn error error-all strip"
396 local cur
="${COMP_WORDS[COMP_CWORD]}"
397 if [ -d .dotest
]; then
398 __gitcomp
"--skip --resolved"
403 __gitcomp
"$__git_whitespacelist" "" "${cur##--whitespace=}"
408 --signoff --utf8 --binary --3way --interactive
418 local cur
="${COMP_WORDS[COMP_CWORD]}"
421 __gitcomp
"$__git_whitespacelist" "" "${cur##--whitespace=}"
426 --stat --numstat --summary --check --index
427 --cached --index-info --reverse --reject --unidiff-zero
428 --apply --no-add --exclude=
429 --whitespace= --inaccurate-eof --verbose
438 local cur
="${COMP_WORDS[COMP_CWORD]}"
441 __gitcomp
"--interactive --refresh"
450 while [ $c -lt $COMP_CWORD ]; do
453 start|bad|good|
reset|visualize|replay|log
)
461 if [ $c -eq $COMP_CWORD -a -z "$command" ]; then
462 __gitcomp
"start bad good reset visualize replay log"
468 __gitcomp
"$(__git_refs)"
478 __gitcomp
"$(__git_refs)"
483 local mycword
="$COMP_CWORD"
484 case "${COMP_WORDS[0]}" in
486 local cmd
="${COMP_WORDS[2]}"
487 mycword
="$((mycword-1))"
490 local cmd
="${COMP_WORDS[1]}"
495 __gitcomp
"create list-heads verify unbundle"
503 __git_complete_revlist
512 __gitcomp
"$(__git_refs)"
517 __gitcomp
"$(__git_refs)"
522 local cur
="${COMP_WORDS[COMP_CWORD]}"
525 __gitcomp
"--edit --no-commit"
528 __gitcomp
"$(__git_refs)"
535 local cur
="${COMP_WORDS[COMP_CWORD]}"
539 --all --author= --signoff --verify --no-verify
540 --edit --amend --include --only
549 __gitcomp
"$(__git_refs)"
554 local cur
="${COMP_WORDS[COMP_CWORD]}"
557 __gitcomp
"--cached --stat --numstat --shortstat --summary
558 --patch-with-stat --name-only --name-status --color
559 --no-color --color-words --no-renames --check
560 --full-index --binary --abbrev --diff-filter
561 --find-copies-harder --pickaxe-all --pickaxe-regex
562 --text --ignore-space-at-eol --ignore-space-change
563 --ignore-all-space --exit-code --quiet --ext-diff
573 __gitcomp
"$(__git_refs)"
578 local cur
="${COMP_WORDS[COMP_CWORD]}"
580 case "${COMP_WORDS[0]},$COMP_CWORD" in
582 __gitcomp
"$(__git_remotes)"
585 __gitcomp
"$(__git_remotes)"
590 __gitcomp
"$(__git_refs)" "" "${cur#*:}"
594 case "${COMP_WORDS[0]}" in
595 git-fetch
) remote
="${COMP_WORDS[1]}" ;;
596 git
) remote
="${COMP_WORDS[2]}" ;;
598 __gitcomp
"$(__git_refs2 "$remote")"
607 local cur
="${COMP_WORDS[COMP_CWORD]}"
611 --stdout --attach --thread
613 --numbered --start-number
618 --full-index --binary
624 __git_complete_revlist
629 local cur
="${COMP_WORDS[COMP_CWORD]}"
632 __gitcomp
"--prune --aggressive"
641 __gitcomp
"$(__git_remotes)"
651 local cur
="${COMP_WORDS[COMP_CWORD]}"
655 oneline short medium full fuller email raw
656 " "" "${cur##--pretty=}"
661 relative iso8601 rfc2822 short local default
662 " "" "${cur##--date=}"
667 --max-count= --max-age= --since= --after=
668 --min-age= --before= --until=
669 --root --topo-order --date-order --reverse
671 --abbrev-commit --abbrev=
672 --relative-date --date=
673 --author= --committer= --grep=
675 --pretty= --name-status --name-only --raw
677 --left-right --cherry-pick
682 __git_complete_revlist
687 local cur
="${COMP_WORDS[COMP_CWORD]}"
688 case "${COMP_WORDS[COMP_CWORD-1]}" in
690 __gitcomp
"$(__git_merge_strategies)"
695 __gitcomp
"$(__git_merge_strategies)" "" "${cur##--strategy=}"
700 --no-commit --no-summary --squash --strategy
704 __gitcomp
"$(__git_refs)"
709 __gitcomp
"$(__git_refs)"
714 __gitcomp
"--tags --all --stdin"
719 local cur
="${COMP_WORDS[COMP_CWORD]}"
721 case "${COMP_WORDS[0]},$COMP_CWORD" in
723 __gitcomp
"$(__git_remotes)"
726 __gitcomp
"$(__git_remotes)"
730 case "${COMP_WORDS[0]}" in
731 git-pull
) remote
="${COMP_WORDS[1]}" ;;
732 git
) remote
="${COMP_WORDS[2]}" ;;
734 __gitcomp
"$(__git_refs "$remote")"
741 local cur
="${COMP_WORDS[COMP_CWORD]}"
743 case "${COMP_WORDS[0]},$COMP_CWORD" in
745 __gitcomp
"$(__git_remotes)"
748 __gitcomp
"$(__git_remotes)"
754 case "${COMP_WORDS[0]}" in
755 git-push
) remote
="${COMP_WORDS[1]}" ;;
756 git
) remote
="${COMP_WORDS[2]}" ;;
758 __gitcomp
"$(__git_refs "$remote")" "" "${cur#*:}"
761 __gitcomp
"$(__git_refs)" + "${cur#+}"
764 __gitcomp
"$(__git_refs)"
773 local cur
="${COMP_WORDS[COMP_CWORD]}"
774 if [ -d .dotest
] ||
[ -d .git
/.dotest-merge
]; then
775 __gitcomp
"--continue --skip --abort"
778 case "${COMP_WORDS[COMP_CWORD-1]}" in
780 __gitcomp
"$(__git_merge_strategies)"
785 __gitcomp
"$(__git_merge_strategies)" "" "${cur##--strategy=}"
789 __gitcomp
"--onto --merge --strategy"
792 __gitcomp
"$(__git_refs)"
797 local cur
="${COMP_WORDS[COMP_CWORD]}"
798 local prv
="${COMP_WORDS[COMP_CWORD-1]}"
801 __gitcomp
"$(__git_remotes)"
805 __gitcomp
"$(__git_refs)"
809 local remote
="${prv#remote.}"
810 remote
="${remote%.fetch}"
811 __gitcomp
"$(__git_refs_remotes "$remote")"
815 local remote
="${prv#remote.}"
816 remote
="${remote%.push}"
817 __gitcomp
"$(git --git-dir="$
(__gitdir
)" \
818 for-each-ref --format='%(refname):%(refname)' \
822 pull.twohead|pull.octopus
)
823 __gitcomp
"$(__git_merge_strategies)"
826 color.branch|color.
diff|color.status
)
827 __gitcomp
"always never auto"
832 black red green yellow blue magenta cyan white
833 bold dim ul blink reverse
845 --global --system --file=
847 --get --get-all --get-regexp
848 --add --unset --unset-all
849 --remove-section --rename-section
854 local pfx
="${cur%.*}."
856 __gitcomp
"remote merge" "$pfx" "$cur"
860 local pfx
="${cur%.*}."
862 __gitcomp
"$(__git_heads)" "$pfx" "$cur" "."
866 local pfx
="${cur%.*}."
869 url fetch push skipDefaultUpdate
870 receivepack uploadpack tagopt
875 local pfx
="${cur%.*}."
877 __gitcomp
"$(__git_remotes)" "$pfx" "$cur" "."
886 core.preferSymlinkRefs
887 core.logAllRefUpdates
888 core.loosecompression
889 core.repositoryFormatVersion
890 core.sharedRepository
891 core.warnAmbiguousRefs
894 core.packedGitWindowSize
909 color.diff.whitespace
915 color.status.untracked
924 gitcvs.dbname gitcvs.dbdriver gitcvs.dbuser gitcvs.dvpass
927 gc.reflogexpireunreachable
940 i18n.logOutputEncoding
953 repack.useDeltaBaseOffset
959 receive.denyNonFastForwards
971 while [ $c -lt $COMP_CWORD ]; do
974 add|show|prune|update
) command="$i"; break ;;
979 if [ $c -eq $COMP_CWORD -a -z "$command" ]; then
980 __gitcomp
"add show prune update"
986 __gitcomp
"$(__git_remotes)"
989 local i c
='' IFS
=$
'\n'
990 for i
in $
(git
--git-dir="$(__gitdir)" config
--list); do
1008 local cur
="${COMP_WORDS[COMP_CWORD]}"
1011 __gitcomp
"--mixed --hard --soft"
1015 __gitcomp
"$(__git_refs)"
1020 local cur
="${COMP_WORDS[COMP_CWORD]}"
1024 --max-count= --max-age= --since= --after=
1025 --min-age= --before= --until=
1027 --author= --committer= --grep=
1030 --numbered --summary
1035 __git_complete_revlist
1040 local cur
="${COMP_WORDS[COMP_CWORD]}"
1044 oneline short medium full fuller email raw
1045 " "" "${cur##--pretty=}"
1049 __gitcomp
"--pretty="
1058 __gitcomp
'list show apply clear'
1064 while [ $c -lt $COMP_CWORD ]; do
1065 i
="${COMP_WORDS[c]}"
1067 add|status|init|update
) command="$i"; break ;;
1072 if [ $c -eq $COMP_CWORD -a -z "$command" ]; then
1073 local cur
="${COMP_WORDS[COMP_CWORD]}"
1076 __gitcomp
"--quiet --cached"
1079 __gitcomp
"add status init update"
1089 while [ $c -lt $COMP_CWORD ]; do
1090 i
="${COMP_WORDS[c]}"
1093 __gitcomp
"$(__git_tags)"
1103 case "${COMP_WORDS[COMP_CWORD-1]}" in
1109 __gitcomp
"$(__git_tags)"
1115 __gitcomp
"$(__git_refs)"
1122 local i c
=1 command __git_dir
1124 while [ $c -lt $COMP_CWORD ]; do
1125 i
="${COMP_WORDS[c]}"
1127 --git-dir=*) __git_dir
="${i#--git-dir=}" ;;
1128 --bare) __git_dir
="." ;;
1129 --version|
--help|
-p|
--paginate) ;;
1130 *) command="$i"; break ;;
1135 if [ $c -eq $COMP_CWORD -a -z "$command" ]; then
1136 case "${COMP_WORDS[COMP_CWORD]}" in
1137 --*=*) COMPREPLY
=() ;;
1146 *) __gitcomp
"$(__git_commands) $(__git_aliases)" ;;
1151 local expansion
=$
(__git_aliased_command
"$command")
1152 [ "$expansion" ] && command="$expansion"
1157 apply
) _git_apply
;;
1158 bisect
) _git_bisect
;;
1159 bundle
) _git_bundle
;;
1160 branch
) _git_branch
;;
1161 checkout
) _git_checkout
;;
1162 cherry
) _git_cherry
;;
1163 cherry-pick
) _git_cherry_pick
;;
1164 commit
) _git_commit
;;
1165 config
) _git_config
;;
1166 describe
) _git_describe
;;
1168 fetch
) _git_fetch
;;
1169 format-patch
) _git_format_patch
;;
1172 ls-remote
) _git_ls_remote
;;
1173 ls-tree
) _git_ls_tree
;;
1175 merge-base
) _git_merge_base
;;
1176 name-rev
) _git_name_rev
;;
1179 rebase
) _git_rebase
;;
1180 remote
) _git_remote
;;
1181 reset) _git_reset
;;
1182 shortlog
) _git_shortlog
;;
1184 show-branch
) _git_log
;;
1185 stash
) _git_stash
;;
1186 submodule
) _git_submodule
;;
1188 whatchanged
) _git_log
;;
1195 local cur
="${COMP_WORDS[COMP_CWORD]}"
1198 __gitcomp
"--not --all"
1202 __git_complete_revlist
1205 complete
-o default
-o nospace
-F _git git
1206 complete
-o default
-o nospace
-F _gitk gitk
1207 complete
-o default
-o nospace
-F _git_am git-am
1208 complete
-o default
-o nospace
-F _git_apply git-apply
1209 complete
-o default
-o nospace
-F _git_bisect git-bisect
1210 complete
-o default
-o nospace
-F _git_branch git-branch
1211 complete
-o default
-o nospace
-F _git_bundle git-bundle
1212 complete
-o default
-o nospace
-F _git_checkout git-checkout
1213 complete
-o default
-o nospace
-F _git_cherry git-cherry
1214 complete
-o default
-o nospace
-F _git_cherry_pick git-cherry-pick
1215 complete
-o default
-o nospace
-F _git_commit git-commit
1216 complete
-o default
-o nospace
-F _git_describe git-describe
1217 complete
-o default
-o nospace
-F _git_diff git-diff
1218 complete
-o default
-o nospace
-F _git_fetch git-fetch
1219 complete
-o default
-o nospace
-F _git_format_patch git-format-patch
1220 complete
-o default
-o nospace
-F _git_gc git-gc
1221 complete
-o default
-o nospace
-F _git_log git-log
1222 complete
-o default
-o nospace
-F _git_ls_remote git-ls-remote
1223 complete
-o default
-o nospace
-F _git_ls_tree git-ls-tree
1224 complete
-o default
-o nospace
-F _git_merge git-merge
1225 complete
-o default
-o nospace
-F _git_merge_base git-merge-base
1226 complete
-o default
-o nospace
-F _git_name_rev git-name-rev
1227 complete
-o default
-o nospace
-F _git_pull git-pull
1228 complete
-o default
-o nospace
-F _git_push git-push
1229 complete
-o default
-o nospace
-F _git_rebase git-rebase
1230 complete
-o default
-o nospace
-F _git_config git-config
1231 complete
-o default
-o nospace
-F _git_remote git-remote
1232 complete
-o default
-o nospace
-F _git_reset git-reset
1233 complete
-o default
-o nospace
-F _git_shortlog git-shortlog
1234 complete
-o default
-o nospace
-F _git_show git-show
1235 complete
-o default
-o nospace
-F _git_stash git-stash
1236 complete
-o default
-o nospace
-F _git_submodule git-submodule
1237 complete
-o default
-o nospace
-F _git_log git-show-branch
1238 complete
-o default
-o nospace
-F _git_tag git-tag
1239 complete
-o default
-o nospace
-F _git_log git-whatchanged
1241 # The following are necessary only for Cygwin, and only are needed
1242 # when the user has tab-completed the executable name and consequently
1243 # included the '.exe' suffix.
1245 if [ Cygwin
= "$(uname -o 2>/dev/null)" ]; then
1246 complete
-o default
-o nospace
-F _git_add git-add.exe
1247 complete
-o default
-o nospace
-F _git_apply git-apply.exe
1248 complete
-o default
-o nospace
-F _git git.exe
1249 complete
-o default
-o nospace
-F _git_branch git-branch.exe
1250 complete
-o default
-o nospace
-F _git_bundle git-bundle.exe
1251 complete
-o default
-o nospace
-F _git_cherry git-cherry.exe
1252 complete
-o default
-o nospace
-F _git_describe git-describe.exe
1253 complete
-o default
-o nospace
-F _git_diff git-diff.exe
1254 complete
-o default
-o nospace
-F _git_format_patch git-format-patch.exe
1255 complete
-o default
-o nospace
-F _git_log git-log.exe
1256 complete
-o default
-o nospace
-F _git_ls_tree git-ls-tree.exe
1257 complete
-o default
-o nospace
-F _git_merge_base git-merge-base.exe
1258 complete
-o default
-o nospace
-F _git_name_rev git-name-rev.exe
1259 complete
-o default
-o nospace
-F _git_push git-push.exe
1260 complete
-o default
-o nospace
-F _git_config git-config
1261 complete
-o default
-o nospace
-F _git_shortlog git-shortlog.exe
1262 complete
-o default
-o nospace
-F _git_show git-show.exe
1263 complete
-o default
-o nospace
-F _git_log git-show-branch.exe
1264 complete
-o default
-o nospace
-F _git_tag git-tag.exe
1265 complete
-o default
-o nospace
-F _git_log git-whatchanged.exe