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 g
="$(git rev-parse --git-dir 2>/dev/null)"
71 if [ -d "$g/../.dotest" ]
74 b
="$(git symbolic-ref HEAD 2>/dev/null)"
75 elif [ -f "$g/.dotest-merge/interactive" ]
78 b
="$(cat $g/.dotest-merge/head-name)"
79 elif [ -d "$g/.dotest-merge" ]
82 b
="$(cat $g/.dotest-merge/head-name)"
83 elif [ -f "$g/MERGE_HEAD" ]
86 b
="$(git symbolic-ref HEAD 2>/dev/null)"
88 if [ -f $g/BISECT_LOG
]
92 if ! b
="$(git symbolic-ref HEAD 2>/dev/null)"
94 if ! b
="$(git describe --exact-match HEAD 2>/dev/null)"
96 b
="$(cut -c1-7 $g/HEAD)..."
102 printf "$1" "${b##refs/heads/}$r"
104 printf " (%s)" "${b##refs/heads/}$r"
111 local all c s
=$
'\n' IFS
=' '$
'\t'$
'\n'
112 local cur
="${COMP_WORDS[COMP_CWORD]}"
113 if [ $# -gt 2 ]; then
118 --*=*) all
="$all$c$4$s" ;;
119 *.
) all
="$all$c$4$s" ;;
120 *) all
="$all$c$4 $s" ;;
124 COMPREPLY
=($
(compgen
-P "$2" -W "$all" -- "$cur"))
130 local cmd i is_hash
=y dir
="$(__gitdir "$1")"
131 if [ -d "$dir" ]; then
132 for i
in $
(git
--git-dir="$dir" \
133 for-each-ref
--format='%(refname)' \
135 echo "${i#refs/heads/}"
139 for i
in $
(git-ls-remote
"$1" 2>/dev
/null
); do
140 case "$is_hash,$i" in
143 n
,refs
/heads
/*) is_hash
=y
; echo "${i#refs/heads/}" ;;
144 n
,*) is_hash
=y
; echo "$i" ;;
151 local cmd i is_hash
=y dir
="$(__gitdir "$1")"
152 if [ -d "$dir" ]; then
153 for i
in $
(git
--git-dir="$dir" \
154 for-each-ref
--format='%(refname)' \
156 echo "${i#refs/tags/}"
160 for i
in $
(git-ls-remote
"$1" 2>/dev
/null
); do
161 case "$is_hash,$i" in
164 n
,refs
/tags
/*) is_hash
=y
; echo "${i#refs/tags/}" ;;
165 n
,*) is_hash
=y
; echo "$i" ;;
172 local cmd i is_hash
=y dir
="$(__gitdir "$1")"
173 if [ -d "$dir" ]; then
174 if [ -e "$dir/HEAD" ]; then echo HEAD
; fi
175 for i
in $
(git
--git-dir="$dir" \
176 for-each-ref
--format='%(refname)' \
177 refs
/tags refs
/heads refs
/remotes
); do
179 refs
/tags
/*) echo "${i#refs/tags/}" ;;
180 refs
/heads
/*) echo "${i#refs/heads/}" ;;
181 refs
/remotes
/*) echo "${i#refs/remotes/}" ;;
187 for i
in $
(git-ls-remote
"$dir" 2>/dev
/null
); do
188 case "$is_hash,$i" in
191 n
,refs
/tags
/*) is_hash
=y
; echo "${i#refs/tags/}" ;;
192 n
,refs
/heads
/*) is_hash
=y
; echo "${i#refs/heads/}" ;;
193 n
,refs
/remotes
/*) is_hash
=y
; echo "${i#refs/remotes/}" ;;
194 n
,*) is_hash
=y
; echo "$i" ;;
202 for i
in $
(__git_refs
"$1"); do
207 __git_refs_remotes
()
209 local cmd i is_hash
=y
210 for i
in $
(git-ls-remote
"$1" 2>/dev
/null
); do
211 case "$is_hash,$i" in
214 echo "$i:refs/remotes/$1/${i#refs/heads/}"
218 n
,refs
/tags
/*) is_hash
=y
;;
226 local i ngoff IFS
=$
'\n' d
="$(__gitdir)"
227 shopt -q nullglob || ngoff
=1
229 for i
in "$d/remotes"/*; do
230 echo ${i#$d/remotes/}
232 [ "$ngoff" ] && shopt -u nullglob
233 for i
in $
(git
--git-dir="$d" config
--list); do
243 __git_merge_strategies
()
245 if [ -n "$__git_merge_strategylist" ]; then
246 echo "$__git_merge_strategylist"
249 sed -n "/^all_strategies='/{
250 s/^all_strategies='//
254 }" "$(git --exec-path)/git-merge"
256 __git_merge_strategylist
=
257 __git_merge_strategylist
="$(__git_merge_strategies 2>/dev/null)"
259 __git_complete_file
()
261 local pfx
ls ref cur
="${COMP_WORDS[COMP_CWORD]}"
277 COMPREPLY
=($
(compgen
-P "$pfx" \
278 -W "$(git --git-dir="$
(__gitdir
)" ls-tree "$ls" \
279 | sed '/^100... blob /s,^.* ,,
288 __gitcomp
"$(__git_refs)"
293 __git_complete_revlist
()
295 local pfx cur
="${COMP_WORDS[COMP_CWORD]}"
300 __gitcomp
"$(__git_refs)" "$pfx" "$cur"
305 __gitcomp
"$(__git_refs)" "$pfx" "$cur"
311 __gitcomp
"$(__git_refs)"
318 if [ -n "$__git_commandlist" ]; then
319 echo "$__git_commandlist"
323 for i
in $
(git
help -a|
egrep '^ ')
326 *--*) : helper pattern
;;
327 applymbox
) : ask gittus
;;
328 applypatch
) : ask gittus
;;
329 archimport
) : import
;;
330 cat-file
) : plumbing
;;
331 check-attr
) : plumbing
;;
332 check-ref-format
) : plumbing
;;
333 commit-tree
) : plumbing
;;
334 cvsexportcommit
) : export;;
335 cvsimport
) : import
;;
336 cvsserver
) : daemon
;;
338 diff-files
) : plumbing
;;
339 diff-index
) : plumbing
;;
340 diff-tree
) : plumbing
;;
341 fast-import
) : import
;;
342 fsck-objects
) : plumbing
;;
343 fetch-pack
) : plumbing
;;
344 fmt-merge-msg
) : plumbing
;;
345 for-each-ref
) : plumbing
;;
346 hash-object
) : plumbing
;;
347 http-
*) : transport
;;
348 index-pack
) : plumbing
;;
349 init-db
) : deprecated
;;
350 local-fetch
) : plumbing
;;
351 mailinfo
) : plumbing
;;
352 mailsplit
) : plumbing
;;
353 merge-
*) : plumbing
;;
356 pack-objects
) : plumbing
;;
357 pack-redundant
) : plumbing
;;
358 pack-refs
) : plumbing
;;
359 parse-remote
) : plumbing
;;
360 patch-id
) : plumbing
;;
361 peek-remote
) : plumbing
;;
363 prune-packed
) : plumbing
;;
364 quiltimport
) : import
;;
365 read-tree
) : plumbing
;;
366 receive-pack
) : plumbing
;;
368 repo-config
) : deprecated
;;
370 rev-list
) : plumbing
;;
371 rev-parse
) : plumbing
;;
372 runstatus
) : plumbing
;;
373 sh-setup
) : internal
;;
375 send-pack
) : plumbing
;;
376 show-index
) : plumbing
;;
378 stripspace
) : plumbing
;;
379 svn
) : import
export;;
380 symbolic-ref
) : plumbing
;;
381 tar-tree
) : deprecated
;;
382 unpack-file
) : plumbing
;;
383 unpack-objects
) : plumbing
;;
384 update-index
) : plumbing
;;
385 update-ref
) : plumbing
;;
386 update-server-info
) : daemon
;;
387 upload-archive
) : plumbing
;;
388 upload-pack
) : plumbing
;;
389 write-tree
) : plumbing
;;
390 verify-tag
) : plumbing
;;
396 __git_commandlist
="$(__git_commands 2>/dev/null)"
401 for i
in $
(git
--git-dir="$(__gitdir)" config
--list); do
411 __git_aliased_command
()
413 local word cmdline
=$
(git
--git-dir="$(__gitdir)" \
414 config
--get "alias.$1")
415 for word
in $cmdline; do
416 if [ "${word##-*}" ]; then
423 __git_whitespacelist
="nowarn warn error error-all strip"
427 local cur
="${COMP_WORDS[COMP_CWORD]}"
428 if [ -d .dotest
]; then
429 __gitcomp
"--skip --resolved"
434 __gitcomp
"$__git_whitespacelist" "" "${cur##--whitespace=}"
439 --signoff --utf8 --binary --3way --interactive
449 local cur
="${COMP_WORDS[COMP_CWORD]}"
452 __gitcomp
"$__git_whitespacelist" "" "${cur##--whitespace=}"
457 --stat --numstat --summary --check --index
458 --cached --index-info --reverse --reject --unidiff-zero
459 --apply --no-add --exclude=
460 --whitespace= --inaccurate-eof --verbose
469 local cur
="${COMP_WORDS[COMP_CWORD]}"
472 __gitcomp
"--interactive --refresh"
481 while [ $c -lt $COMP_CWORD ]; do
484 start|bad|good|
reset|visualize|replay|log
)
492 if [ $c -eq $COMP_CWORD -a -z "$command" ]; then
493 __gitcomp
"start bad good reset visualize replay log"
499 __gitcomp
"$(__git_refs)"
509 __gitcomp
"$(__git_refs)"
514 local mycword
="$COMP_CWORD"
515 case "${COMP_WORDS[0]}" in
517 local cmd
="${COMP_WORDS[2]}"
518 mycword
="$((mycword-1))"
521 local cmd
="${COMP_WORDS[1]}"
526 __gitcomp
"create list-heads verify unbundle"
534 __git_complete_revlist
543 __gitcomp
"$(__git_refs)"
548 __gitcomp
"$(__git_refs)"
553 local cur
="${COMP_WORDS[COMP_CWORD]}"
556 __gitcomp
"--edit --no-commit"
559 __gitcomp
"$(__git_refs)"
566 local cur
="${COMP_WORDS[COMP_CWORD]}"
570 --all --author= --signoff --verify --no-verify
571 --edit --amend --include --only
580 __gitcomp
"$(__git_refs)"
585 local cur
="${COMP_WORDS[COMP_CWORD]}"
588 __gitcomp
"--cached --stat --numstat --shortstat --summary
589 --patch-with-stat --name-only --name-status --color
590 --no-color --color-words --no-renames --check
591 --full-index --binary --abbrev --diff-filter
592 --find-copies-harder --pickaxe-all --pickaxe-regex
593 --text --ignore-space-at-eol --ignore-space-change
594 --ignore-all-space --exit-code --quiet --ext-diff
604 __gitcomp
"$(__git_refs)"
609 local cur
="${COMP_WORDS[COMP_CWORD]}"
611 case "${COMP_WORDS[0]},$COMP_CWORD" in
613 __gitcomp
"$(__git_remotes)"
616 __gitcomp
"$(__git_remotes)"
621 __gitcomp
"$(__git_refs)" "" "${cur#*:}"
625 case "${COMP_WORDS[0]}" in
626 git-fetch
) remote
="${COMP_WORDS[1]}" ;;
627 git
) remote
="${COMP_WORDS[2]}" ;;
629 __gitcomp
"$(__git_refs2 "$remote")"
638 local cur
="${COMP_WORDS[COMP_CWORD]}"
642 --stdout --attach --thread
644 --numbered --start-number
649 --full-index --binary
655 __git_complete_revlist
660 local cur
="${COMP_WORDS[COMP_CWORD]}"
663 __gitcomp
"--prune --aggressive"
672 __gitcomp
"$(__git_remotes)"
682 local cur
="${COMP_WORDS[COMP_CWORD]}"
686 oneline short medium full fuller email raw
687 " "" "${cur##--pretty=}"
692 relative iso8601 rfc2822 short local default
693 " "" "${cur##--date=}"
698 --max-count= --max-age= --since= --after=
699 --min-age= --before= --until=
700 --root --topo-order --date-order --reverse
702 --abbrev-commit --abbrev=
703 --relative-date --date=
704 --author= --committer= --grep=
706 --pretty= --name-status --name-only --raw
708 --left-right --cherry-pick
713 __git_complete_revlist
718 local cur
="${COMP_WORDS[COMP_CWORD]}"
719 case "${COMP_WORDS[COMP_CWORD-1]}" in
721 __gitcomp
"$(__git_merge_strategies)"
726 __gitcomp
"$(__git_merge_strategies)" "" "${cur##--strategy=}"
731 --no-commit --no-summary --squash --strategy
735 __gitcomp
"$(__git_refs)"
740 __gitcomp
"$(__git_refs)"
745 __gitcomp
"--tags --all --stdin"
750 local cur
="${COMP_WORDS[COMP_CWORD]}"
752 case "${COMP_WORDS[0]},$COMP_CWORD" in
754 __gitcomp
"$(__git_remotes)"
757 __gitcomp
"$(__git_remotes)"
761 case "${COMP_WORDS[0]}" in
762 git-pull
) remote
="${COMP_WORDS[1]}" ;;
763 git
) remote
="${COMP_WORDS[2]}" ;;
765 __gitcomp
"$(__git_refs "$remote")"
772 local cur
="${COMP_WORDS[COMP_CWORD]}"
774 case "${COMP_WORDS[0]},$COMP_CWORD" in
776 __gitcomp
"$(__git_remotes)"
779 __gitcomp
"$(__git_remotes)"
785 case "${COMP_WORDS[0]}" in
786 git-push
) remote
="${COMP_WORDS[1]}" ;;
787 git
) remote
="${COMP_WORDS[2]}" ;;
789 __gitcomp
"$(__git_refs "$remote")" "" "${cur#*:}"
792 __gitcomp
"$(__git_refs)" + "${cur#+}"
795 __gitcomp
"$(__git_refs)"
804 local cur
="${COMP_WORDS[COMP_CWORD]}"
805 if [ -d .dotest
] ||
[ -d .git
/.dotest-merge
]; then
806 __gitcomp
"--continue --skip --abort"
809 case "${COMP_WORDS[COMP_CWORD-1]}" in
811 __gitcomp
"$(__git_merge_strategies)"
816 __gitcomp
"$(__git_merge_strategies)" "" "${cur##--strategy=}"
820 __gitcomp
"--onto --merge --strategy"
823 __gitcomp
"$(__git_refs)"
828 local cur
="${COMP_WORDS[COMP_CWORD]}"
829 local prv
="${COMP_WORDS[COMP_CWORD-1]}"
832 __gitcomp
"$(__git_remotes)"
836 __gitcomp
"$(__git_refs)"
840 local remote
="${prv#remote.}"
841 remote
="${remote%.fetch}"
842 __gitcomp
"$(__git_refs_remotes "$remote")"
846 local remote
="${prv#remote.}"
847 remote
="${remote%.push}"
848 __gitcomp
"$(git --git-dir="$
(__gitdir
)" \
849 for-each-ref --format='%(refname):%(refname)' \
853 pull.twohead|pull.octopus
)
854 __gitcomp
"$(__git_merge_strategies)"
857 color.branch|color.
diff|color.status
)
858 __gitcomp
"always never auto"
863 black red green yellow blue magenta cyan white
864 bold dim ul blink reverse
876 --global --system --file=
878 --get --get-all --get-regexp
879 --add --unset --unset-all
880 --remove-section --rename-section
885 local pfx
="${cur%.*}."
887 __gitcomp
"remote merge" "$pfx" "$cur"
891 local pfx
="${cur%.*}."
893 __gitcomp
"$(__git_heads)" "$pfx" "$cur" "."
897 local pfx
="${cur%.*}."
900 url fetch push skipDefaultUpdate
901 receivepack uploadpack tagopt
906 local pfx
="${cur%.*}."
908 __gitcomp
"$(__git_remotes)" "$pfx" "$cur" "."
917 core.preferSymlinkRefs
918 core.logAllRefUpdates
919 core.loosecompression
920 core.repositoryFormatVersion
921 core.sharedRepository
922 core.warnAmbiguousRefs
925 core.packedGitWindowSize
940 color.diff.whitespace
946 color.status.untracked
955 gitcvs.dbname gitcvs.dbdriver gitcvs.dbuser gitcvs.dvpass
958 gc.reflogexpireunreachable
971 i18n.logOutputEncoding
984 repack.useDeltaBaseOffset
990 receive.denyNonFastForwards
1002 while [ $c -lt $COMP_CWORD ]; do
1003 i
="${COMP_WORDS[c]}"
1005 add|
rm|show|prune|update
) command="$i"; break ;;
1010 if [ $c -eq $COMP_CWORD -a -z "$command" ]; then
1011 __gitcomp
"add rm show prune update"
1017 __gitcomp
"$(__git_remotes)"
1020 local i c
='' IFS
=$
'\n'
1021 for i
in $
(git
--git-dir="$(__gitdir)" config
--list); do
1039 local cur
="${COMP_WORDS[COMP_CWORD]}"
1042 __gitcomp
"--mixed --hard --soft"
1046 __gitcomp
"$(__git_refs)"
1051 local cur
="${COMP_WORDS[COMP_CWORD]}"
1055 --max-count= --max-age= --since= --after=
1056 --min-age= --before= --until=
1058 --author= --committer= --grep=
1061 --numbered --summary
1066 __git_complete_revlist
1071 local cur
="${COMP_WORDS[COMP_CWORD]}"
1075 oneline short medium full fuller email raw
1076 " "" "${cur##--pretty=}"
1080 __gitcomp
"--pretty="
1089 __gitcomp
'list show apply clear'
1095 while [ $c -lt $COMP_CWORD ]; do
1096 i
="${COMP_WORDS[c]}"
1098 add|status|init|update
) command="$i"; break ;;
1103 if [ $c -eq $COMP_CWORD -a -z "$command" ]; then
1104 local cur
="${COMP_WORDS[COMP_CWORD]}"
1107 __gitcomp
"--quiet --cached"
1110 __gitcomp
"add status init update"
1120 while [ $c -lt $COMP_CWORD ]; do
1121 i
="${COMP_WORDS[c]}"
1124 __gitcomp
"$(__git_tags)"
1134 case "${COMP_WORDS[COMP_CWORD-1]}" in
1140 __gitcomp
"$(__git_tags)"
1146 __gitcomp
"$(__git_refs)"
1153 local i c
=1 command __git_dir
1155 while [ $c -lt $COMP_CWORD ]; do
1156 i
="${COMP_WORDS[c]}"
1158 --git-dir=*) __git_dir
="${i#--git-dir=}" ;;
1159 --bare) __git_dir
="." ;;
1160 --version|
--help|
-p|
--paginate) ;;
1161 *) command="$i"; break ;;
1166 if [ $c -eq $COMP_CWORD -a -z "$command" ]; then
1167 case "${COMP_WORDS[COMP_CWORD]}" in
1168 --*=*) COMPREPLY
=() ;;
1177 *) __gitcomp
"$(__git_commands) $(__git_aliases)" ;;
1182 local expansion
=$
(__git_aliased_command
"$command")
1183 [ "$expansion" ] && command="$expansion"
1188 apply
) _git_apply
;;
1189 bisect
) _git_bisect
;;
1190 bundle
) _git_bundle
;;
1191 branch
) _git_branch
;;
1192 checkout
) _git_checkout
;;
1193 cherry
) _git_cherry
;;
1194 cherry-pick
) _git_cherry_pick
;;
1195 commit
) _git_commit
;;
1196 config
) _git_config
;;
1197 describe
) _git_describe
;;
1199 fetch
) _git_fetch
;;
1200 format-patch
) _git_format_patch
;;
1203 ls-remote
) _git_ls_remote
;;
1204 ls-tree
) _git_ls_tree
;;
1206 merge-base
) _git_merge_base
;;
1207 name-rev
) _git_name_rev
;;
1210 rebase
) _git_rebase
;;
1211 remote
) _git_remote
;;
1212 reset) _git_reset
;;
1213 shortlog
) _git_shortlog
;;
1215 show-branch
) _git_log
;;
1216 stash
) _git_stash
;;
1217 submodule
) _git_submodule
;;
1219 whatchanged
) _git_log
;;
1226 local cur
="${COMP_WORDS[COMP_CWORD]}"
1229 __gitcomp
"--not --all"
1233 __git_complete_revlist
1236 complete
-o default
-o nospace
-F _git git
1237 complete
-o default
-o nospace
-F _gitk gitk
1238 complete
-o default
-o nospace
-F _git_am git-am
1239 complete
-o default
-o nospace
-F _git_apply git-apply
1240 complete
-o default
-o nospace
-F _git_bisect git-bisect
1241 complete
-o default
-o nospace
-F _git_branch git-branch
1242 complete
-o default
-o nospace
-F _git_bundle git-bundle
1243 complete
-o default
-o nospace
-F _git_checkout git-checkout
1244 complete
-o default
-o nospace
-F _git_cherry git-cherry
1245 complete
-o default
-o nospace
-F _git_cherry_pick git-cherry-pick
1246 complete
-o default
-o nospace
-F _git_commit git-commit
1247 complete
-o default
-o nospace
-F _git_describe git-describe
1248 complete
-o default
-o nospace
-F _git_diff git-diff
1249 complete
-o default
-o nospace
-F _git_fetch git-fetch
1250 complete
-o default
-o nospace
-F _git_format_patch git-format-patch
1251 complete
-o default
-o nospace
-F _git_gc git-gc
1252 complete
-o default
-o nospace
-F _git_log git-log
1253 complete
-o default
-o nospace
-F _git_ls_remote git-ls-remote
1254 complete
-o default
-o nospace
-F _git_ls_tree git-ls-tree
1255 complete
-o default
-o nospace
-F _git_merge git-merge
1256 complete
-o default
-o nospace
-F _git_merge_base git-merge-base
1257 complete
-o default
-o nospace
-F _git_name_rev git-name-rev
1258 complete
-o default
-o nospace
-F _git_pull git-pull
1259 complete
-o default
-o nospace
-F _git_push git-push
1260 complete
-o default
-o nospace
-F _git_rebase git-rebase
1261 complete
-o default
-o nospace
-F _git_config git-config
1262 complete
-o default
-o nospace
-F _git_remote git-remote
1263 complete
-o default
-o nospace
-F _git_reset git-reset
1264 complete
-o default
-o nospace
-F _git_shortlog git-shortlog
1265 complete
-o default
-o nospace
-F _git_show git-show
1266 complete
-o default
-o nospace
-F _git_stash git-stash
1267 complete
-o default
-o nospace
-F _git_submodule git-submodule
1268 complete
-o default
-o nospace
-F _git_log git-show-branch
1269 complete
-o default
-o nospace
-F _git_tag git-tag
1270 complete
-o default
-o nospace
-F _git_log git-whatchanged
1272 # The following are necessary only for Cygwin, and only are needed
1273 # when the user has tab-completed the executable name and consequently
1274 # included the '.exe' suffix.
1276 if [ Cygwin
= "$(uname -o 2>/dev/null)" ]; then
1277 complete
-o default
-o nospace
-F _git_add git-add.exe
1278 complete
-o default
-o nospace
-F _git_apply git-apply.exe
1279 complete
-o default
-o nospace
-F _git git.exe
1280 complete
-o default
-o nospace
-F _git_branch git-branch.exe
1281 complete
-o default
-o nospace
-F _git_bundle git-bundle.exe
1282 complete
-o default
-o nospace
-F _git_cherry git-cherry.exe
1283 complete
-o default
-o nospace
-F _git_describe git-describe.exe
1284 complete
-o default
-o nospace
-F _git_diff git-diff.exe
1285 complete
-o default
-o nospace
-F _git_format_patch git-format-patch.exe
1286 complete
-o default
-o nospace
-F _git_log git-log.exe
1287 complete
-o default
-o nospace
-F _git_ls_tree git-ls-tree.exe
1288 complete
-o default
-o nospace
-F _git_merge_base git-merge-base.exe
1289 complete
-o default
-o nospace
-F _git_name_rev git-name-rev.exe
1290 complete
-o default
-o nospace
-F _git_push git-push.exe
1291 complete
-o default
-o nospace
-F _git_config git-config
1292 complete
-o default
-o nospace
-F _git_shortlog git-shortlog.exe
1293 complete
-o default
-o nospace
-F _git_show git-show.exe
1294 complete
-o default
-o nospace
-F _git_log git-show-branch.exe
1295 complete
-o default
-o nospace
-F _git_tag git-tag.exe
1296 complete
-o default
-o nospace
-F _git_log git-whatchanged.exe