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 *--*) : helper pattern
;;
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-pack
) : plumbing
;;
312 fmt-merge-msg
) : plumbing
;;
313 for-each-ref
) : plumbing
;;
314 hash-object
) : plumbing
;;
315 http-
*) : transport
;;
316 index-pack
) : plumbing
;;
317 init-db
) : deprecated
;;
318 local-fetch
) : plumbing
;;
319 mailinfo
) : plumbing
;;
320 mailsplit
) : plumbing
;;
321 merge-
*) : plumbing
;;
324 pack-objects
) : plumbing
;;
325 pack-redundant
) : plumbing
;;
326 pack-refs
) : plumbing
;;
327 parse-remote
) : plumbing
;;
328 patch-id
) : plumbing
;;
329 peek-remote
) : plumbing
;;
331 prune-packed
) : plumbing
;;
332 quiltimport
) : import
;;
333 read-tree
) : plumbing
;;
334 receive-pack
) : plumbing
;;
336 repo-config
) : deprecated
;;
338 rev-list
) : plumbing
;;
339 rev-parse
) : plumbing
;;
340 runstatus
) : plumbing
;;
341 sh-setup
) : internal
;;
343 send-pack
) : plumbing
;;
344 show-index
) : plumbing
;;
346 stripspace
) : plumbing
;;
347 svn
) : import
export;;
348 symbolic-ref
) : plumbing
;;
349 tar-tree
) : deprecated
;;
350 unpack-file
) : plumbing
;;
351 unpack-objects
) : plumbing
;;
352 update-index
) : plumbing
;;
353 update-ref
) : plumbing
;;
354 update-server-info
) : daemon
;;
355 upload-archive
) : plumbing
;;
356 upload-pack
) : plumbing
;;
357 write-tree
) : plumbing
;;
358 verify-tag
) : plumbing
;;
364 __git_commandlist
="$(__git_commands 2>/dev/null)"
369 for i
in $
(git
--git-dir="$(__gitdir)" config
--list); do
379 __git_aliased_command
()
381 local word cmdline
=$
(git
--git-dir="$(__gitdir)" \
382 config
--get "alias.$1")
383 for word
in $cmdline; do
384 if [ "${word##-*}" ]; then
391 __git_whitespacelist
="nowarn warn error error-all strip"
395 local cur
="${COMP_WORDS[COMP_CWORD]}"
396 if [ -d .dotest
]; then
397 __gitcomp
"--skip --resolved"
402 __gitcomp
"$__git_whitespacelist" "" "${cur##--whitespace=}"
407 --signoff --utf8 --binary --3way --interactive
417 local cur
="${COMP_WORDS[COMP_CWORD]}"
420 __gitcomp
"$__git_whitespacelist" "" "${cur##--whitespace=}"
425 --stat --numstat --summary --check --index
426 --cached --index-info --reverse --reject --unidiff-zero
427 --apply --no-add --exclude=
428 --whitespace= --inaccurate-eof --verbose
437 local cur
="${COMP_WORDS[COMP_CWORD]}"
440 __gitcomp
"--interactive --refresh"
449 while [ $c -lt $COMP_CWORD ]; do
452 start|bad|good|
reset|visualize|replay|log
)
460 if [ $c -eq $COMP_CWORD -a -z "$command" ]; then
461 __gitcomp
"start bad good reset visualize replay log"
467 __gitcomp
"$(__git_refs)"
477 __gitcomp
"$(__git_refs)"
482 local mycword
="$COMP_CWORD"
483 case "${COMP_WORDS[0]}" in
485 local cmd
="${COMP_WORDS[2]}"
486 mycword
="$((mycword-1))"
489 local cmd
="${COMP_WORDS[1]}"
494 __gitcomp
"create list-heads verify unbundle"
502 __git_complete_revlist
511 __gitcomp
"$(__git_refs)"
516 __gitcomp
"$(__git_refs)"
521 local cur
="${COMP_WORDS[COMP_CWORD]}"
524 __gitcomp
"--edit --no-commit"
527 __gitcomp
"$(__git_refs)"
534 local cur
="${COMP_WORDS[COMP_CWORD]}"
538 --all --author= --signoff --verify --no-verify
539 --edit --amend --include --only
548 __gitcomp
"$(__git_refs)"
553 local cur
="${COMP_WORDS[COMP_CWORD]}"
556 __gitcomp
"--cached --stat --numstat --shortstat --summary
557 --patch-with-stat --name-only --name-status --color
558 --no-color --color-words --no-renames --check
559 --full-index --binary --abbrev --diff-filter
560 --find-copies-harder --pickaxe-all --pickaxe-regex
561 --text --ignore-space-at-eol --ignore-space-change
562 --ignore-all-space --exit-code --quiet --ext-diff
572 __gitcomp
"$(__git_refs)"
577 local cur
="${COMP_WORDS[COMP_CWORD]}"
579 case "${COMP_WORDS[0]},$COMP_CWORD" in
581 __gitcomp
"$(__git_remotes)"
584 __gitcomp
"$(__git_remotes)"
589 __gitcomp
"$(__git_refs)" "" "${cur#*:}"
593 case "${COMP_WORDS[0]}" in
594 git-fetch
) remote
="${COMP_WORDS[1]}" ;;
595 git
) remote
="${COMP_WORDS[2]}" ;;
597 __gitcomp
"$(__git_refs2 "$remote")"
606 local cur
="${COMP_WORDS[COMP_CWORD]}"
610 --stdout --attach --thread
612 --numbered --start-number
617 --full-index --binary
623 __git_complete_revlist
628 local cur
="${COMP_WORDS[COMP_CWORD]}"
631 __gitcomp
"--prune --aggressive"
640 __gitcomp
"$(__git_remotes)"
650 local cur
="${COMP_WORDS[COMP_CWORD]}"
654 oneline short medium full fuller email raw
655 " "" "${cur##--pretty=}"
660 relative iso8601 rfc2822 short local default
661 " "" "${cur##--date=}"
666 --max-count= --max-age= --since= --after=
667 --min-age= --before= --until=
668 --root --topo-order --date-order --reverse
670 --abbrev-commit --abbrev=
671 --relative-date --date=
672 --author= --committer= --grep=
674 --pretty= --name-status --name-only --raw
676 --left-right --cherry-pick
681 __git_complete_revlist
686 local cur
="${COMP_WORDS[COMP_CWORD]}"
687 case "${COMP_WORDS[COMP_CWORD-1]}" in
689 __gitcomp
"$(__git_merge_strategies)"
694 __gitcomp
"$(__git_merge_strategies)" "" "${cur##--strategy=}"
699 --no-commit --no-summary --squash --strategy
703 __gitcomp
"$(__git_refs)"
708 __gitcomp
"$(__git_refs)"
713 __gitcomp
"--tags --all --stdin"
718 local cur
="${COMP_WORDS[COMP_CWORD]}"
720 case "${COMP_WORDS[0]},$COMP_CWORD" in
722 __gitcomp
"$(__git_remotes)"
725 __gitcomp
"$(__git_remotes)"
729 case "${COMP_WORDS[0]}" in
730 git-pull
) remote
="${COMP_WORDS[1]}" ;;
731 git
) remote
="${COMP_WORDS[2]}" ;;
733 __gitcomp
"$(__git_refs "$remote")"
740 local cur
="${COMP_WORDS[COMP_CWORD]}"
742 case "${COMP_WORDS[0]},$COMP_CWORD" in
744 __gitcomp
"$(__git_remotes)"
747 __gitcomp
"$(__git_remotes)"
753 case "${COMP_WORDS[0]}" in
754 git-push
) remote
="${COMP_WORDS[1]}" ;;
755 git
) remote
="${COMP_WORDS[2]}" ;;
757 __gitcomp
"$(__git_refs "$remote")" "" "${cur#*:}"
760 __gitcomp
"$(__git_refs)" + "${cur#+}"
763 __gitcomp
"$(__git_refs)"
772 local cur
="${COMP_WORDS[COMP_CWORD]}"
773 if [ -d .dotest
] ||
[ -d .git
/.dotest-merge
]; then
774 __gitcomp
"--continue --skip --abort"
777 case "${COMP_WORDS[COMP_CWORD-1]}" in
779 __gitcomp
"$(__git_merge_strategies)"
784 __gitcomp
"$(__git_merge_strategies)" "" "${cur##--strategy=}"
788 __gitcomp
"--onto --merge --strategy"
791 __gitcomp
"$(__git_refs)"
796 local cur
="${COMP_WORDS[COMP_CWORD]}"
797 local prv
="${COMP_WORDS[COMP_CWORD-1]}"
800 __gitcomp
"$(__git_remotes)"
804 __gitcomp
"$(__git_refs)"
808 local remote
="${prv#remote.}"
809 remote
="${remote%.fetch}"
810 __gitcomp
"$(__git_refs_remotes "$remote")"
814 local remote
="${prv#remote.}"
815 remote
="${remote%.push}"
816 __gitcomp
"$(git --git-dir="$
(__gitdir
)" \
817 for-each-ref --format='%(refname):%(refname)' \
821 pull.twohead|pull.octopus
)
822 __gitcomp
"$(__git_merge_strategies)"
825 color.branch|color.
diff|color.status
)
826 __gitcomp
"always never auto"
831 black red green yellow blue magenta cyan white
832 bold dim ul blink reverse
844 --global --system --file=
846 --get --get-all --get-regexp
847 --add --unset --unset-all
848 --remove-section --rename-section
853 local pfx
="${cur%.*}."
855 __gitcomp
"remote merge" "$pfx" "$cur"
859 local pfx
="${cur%.*}."
861 __gitcomp
"$(__git_heads)" "$pfx" "$cur" "."
865 local pfx
="${cur%.*}."
868 url fetch push skipDefaultUpdate
869 receivepack uploadpack tagopt
874 local pfx
="${cur%.*}."
876 __gitcomp
"$(__git_remotes)" "$pfx" "$cur" "."
885 core.preferSymlinkRefs
886 core.logAllRefUpdates
887 core.loosecompression
888 core.repositoryFormatVersion
889 core.sharedRepository
890 core.warnAmbiguousRefs
893 core.packedGitWindowSize
908 color.diff.whitespace
914 color.status.untracked
923 gitcvs.dbname gitcvs.dbdriver gitcvs.dbuser gitcvs.dvpass
926 gc.reflogexpireunreachable
939 i18n.logOutputEncoding
952 repack.useDeltaBaseOffset
958 receive.denyNonFastForwards
970 while [ $c -lt $COMP_CWORD ]; do
973 add|
rm|show|prune|update
) command="$i"; break ;;
978 if [ $c -eq $COMP_CWORD -a -z "$command" ]; then
979 __gitcomp
"add rm show prune update"
985 __gitcomp
"$(__git_remotes)"
988 local i c
='' IFS
=$
'\n'
989 for i
in $
(git
--git-dir="$(__gitdir)" config
--list); do
1007 local cur
="${COMP_WORDS[COMP_CWORD]}"
1010 __gitcomp
"--mixed --hard --soft"
1014 __gitcomp
"$(__git_refs)"
1019 local cur
="${COMP_WORDS[COMP_CWORD]}"
1023 --max-count= --max-age= --since= --after=
1024 --min-age= --before= --until=
1026 --author= --committer= --grep=
1029 --numbered --summary
1034 __git_complete_revlist
1039 local cur
="${COMP_WORDS[COMP_CWORD]}"
1043 oneline short medium full fuller email raw
1044 " "" "${cur##--pretty=}"
1048 __gitcomp
"--pretty="
1057 __gitcomp
'list show apply clear'
1063 while [ $c -lt $COMP_CWORD ]; do
1064 i
="${COMP_WORDS[c]}"
1066 add|status|init|update
) command="$i"; break ;;
1071 if [ $c -eq $COMP_CWORD -a -z "$command" ]; then
1072 local cur
="${COMP_WORDS[COMP_CWORD]}"
1075 __gitcomp
"--quiet --cached"
1078 __gitcomp
"add status init update"
1088 while [ $c -lt $COMP_CWORD ]; do
1089 i
="${COMP_WORDS[c]}"
1092 __gitcomp
"$(__git_tags)"
1102 case "${COMP_WORDS[COMP_CWORD-1]}" in
1108 __gitcomp
"$(__git_tags)"
1114 __gitcomp
"$(__git_refs)"
1121 local i c
=1 command __git_dir
1123 while [ $c -lt $COMP_CWORD ]; do
1124 i
="${COMP_WORDS[c]}"
1126 --git-dir=*) __git_dir
="${i#--git-dir=}" ;;
1127 --bare) __git_dir
="." ;;
1128 --version|
--help|
-p|
--paginate) ;;
1129 *) command="$i"; break ;;
1134 if [ $c -eq $COMP_CWORD -a -z "$command" ]; then
1135 case "${COMP_WORDS[COMP_CWORD]}" in
1136 --*=*) COMPREPLY
=() ;;
1145 *) __gitcomp
"$(__git_commands) $(__git_aliases)" ;;
1150 local expansion
=$
(__git_aliased_command
"$command")
1151 [ "$expansion" ] && command="$expansion"
1156 apply
) _git_apply
;;
1157 bisect
) _git_bisect
;;
1158 bundle
) _git_bundle
;;
1159 branch
) _git_branch
;;
1160 checkout
) _git_checkout
;;
1161 cherry
) _git_cherry
;;
1162 cherry-pick
) _git_cherry_pick
;;
1163 commit
) _git_commit
;;
1164 config
) _git_config
;;
1165 describe
) _git_describe
;;
1167 fetch
) _git_fetch
;;
1168 format-patch
) _git_format_patch
;;
1171 ls-remote
) _git_ls_remote
;;
1172 ls-tree
) _git_ls_tree
;;
1174 merge-base
) _git_merge_base
;;
1175 name-rev
) _git_name_rev
;;
1178 rebase
) _git_rebase
;;
1179 remote
) _git_remote
;;
1180 reset) _git_reset
;;
1181 shortlog
) _git_shortlog
;;
1183 show-branch
) _git_log
;;
1184 stash
) _git_stash
;;
1185 submodule
) _git_submodule
;;
1187 whatchanged
) _git_log
;;
1194 local cur
="${COMP_WORDS[COMP_CWORD]}"
1197 __gitcomp
"--not --all"
1201 __git_complete_revlist
1204 complete
-o default
-o nospace
-F _git git
1205 complete
-o default
-o nospace
-F _gitk gitk
1206 complete
-o default
-o nospace
-F _git_am git-am
1207 complete
-o default
-o nospace
-F _git_apply git-apply
1208 complete
-o default
-o nospace
-F _git_bisect git-bisect
1209 complete
-o default
-o nospace
-F _git_branch git-branch
1210 complete
-o default
-o nospace
-F _git_bundle git-bundle
1211 complete
-o default
-o nospace
-F _git_checkout git-checkout
1212 complete
-o default
-o nospace
-F _git_cherry git-cherry
1213 complete
-o default
-o nospace
-F _git_cherry_pick git-cherry-pick
1214 complete
-o default
-o nospace
-F _git_commit git-commit
1215 complete
-o default
-o nospace
-F _git_describe git-describe
1216 complete
-o default
-o nospace
-F _git_diff git-diff
1217 complete
-o default
-o nospace
-F _git_fetch git-fetch
1218 complete
-o default
-o nospace
-F _git_format_patch git-format-patch
1219 complete
-o default
-o nospace
-F _git_gc git-gc
1220 complete
-o default
-o nospace
-F _git_log git-log
1221 complete
-o default
-o nospace
-F _git_ls_remote git-ls-remote
1222 complete
-o default
-o nospace
-F _git_ls_tree git-ls-tree
1223 complete
-o default
-o nospace
-F _git_merge git-merge
1224 complete
-o default
-o nospace
-F _git_merge_base git-merge-base
1225 complete
-o default
-o nospace
-F _git_name_rev git-name-rev
1226 complete
-o default
-o nospace
-F _git_pull git-pull
1227 complete
-o default
-o nospace
-F _git_push git-push
1228 complete
-o default
-o nospace
-F _git_rebase git-rebase
1229 complete
-o default
-o nospace
-F _git_config git-config
1230 complete
-o default
-o nospace
-F _git_remote git-remote
1231 complete
-o default
-o nospace
-F _git_reset git-reset
1232 complete
-o default
-o nospace
-F _git_shortlog git-shortlog
1233 complete
-o default
-o nospace
-F _git_show git-show
1234 complete
-o default
-o nospace
-F _git_stash git-stash
1235 complete
-o default
-o nospace
-F _git_submodule git-submodule
1236 complete
-o default
-o nospace
-F _git_log git-show-branch
1237 complete
-o default
-o nospace
-F _git_tag git-tag
1238 complete
-o default
-o nospace
-F _git_log git-whatchanged
1240 # The following are necessary only for Cygwin, and only are needed
1241 # when the user has tab-completed the executable name and consequently
1242 # included the '.exe' suffix.
1244 if [ Cygwin
= "$(uname -o 2>/dev/null)" ]; then
1245 complete
-o default
-o nospace
-F _git_add git-add.exe
1246 complete
-o default
-o nospace
-F _git_apply git-apply.exe
1247 complete
-o default
-o nospace
-F _git git.exe
1248 complete
-o default
-o nospace
-F _git_branch git-branch.exe
1249 complete
-o default
-o nospace
-F _git_bundle git-bundle.exe
1250 complete
-o default
-o nospace
-F _git_cherry git-cherry.exe
1251 complete
-o default
-o nospace
-F _git_describe git-describe.exe
1252 complete
-o default
-o nospace
-F _git_diff git-diff.exe
1253 complete
-o default
-o nospace
-F _git_format_patch git-format-patch.exe
1254 complete
-o default
-o nospace
-F _git_log git-log.exe
1255 complete
-o default
-o nospace
-F _git_ls_tree git-ls-tree.exe
1256 complete
-o default
-o nospace
-F _git_merge_base git-merge-base.exe
1257 complete
-o default
-o nospace
-F _git_name_rev git-name-rev.exe
1258 complete
-o default
-o nospace
-F _git_push git-push.exe
1259 complete
-o default
-o nospace
-F _git_config git-config
1260 complete
-o default
-o nospace
-F _git_shortlog git-shortlog.exe
1261 complete
-o default
-o nospace
-F _git_show git-show.exe
1262 complete
-o default
-o nospace
-F _git_log git-show-branch.exe
1263 complete
-o default
-o nospace
-F _git_tag git-tag.exe
1264 complete
-o default
-o nospace
-F _git_log git-whatchanged.exe