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 case "${COMP_WORDS[COMP_CWORD]}" in
510 --*=*) COMPREPLY
=() ;;
513 --color --no-color --verbose --abbrev= --no-abbrev
517 *) __gitcomp
"$(__git_refs)" ;;
523 local mycword
="$COMP_CWORD"
524 case "${COMP_WORDS[0]}" in
526 local cmd
="${COMP_WORDS[2]}"
527 mycword
="$((mycword-1))"
530 local cmd
="${COMP_WORDS[1]}"
535 __gitcomp
"create list-heads verify unbundle"
543 __git_complete_revlist
552 __gitcomp
"$(__git_refs)"
557 __gitcomp
"$(__git_refs)"
562 local cur
="${COMP_WORDS[COMP_CWORD]}"
565 __gitcomp
"--edit --no-commit"
568 __gitcomp
"$(__git_refs)"
575 local cur
="${COMP_WORDS[COMP_CWORD]}"
579 --all --author= --signoff --verify --no-verify
580 --edit --amend --include --only
589 __gitcomp
"$(__git_refs)"
594 local cur
="${COMP_WORDS[COMP_CWORD]}"
597 __gitcomp
"--cached --stat --numstat --shortstat --summary
598 --patch-with-stat --name-only --name-status --color
599 --no-color --color-words --no-renames --check
600 --full-index --binary --abbrev --diff-filter
601 --find-copies-harder --pickaxe-all --pickaxe-regex
602 --text --ignore-space-at-eol --ignore-space-change
603 --ignore-all-space --exit-code --quiet --ext-diff
613 __gitcomp
"$(__git_refs)"
618 local cur
="${COMP_WORDS[COMP_CWORD]}"
620 case "${COMP_WORDS[0]},$COMP_CWORD" in
622 __gitcomp
"$(__git_remotes)"
625 __gitcomp
"$(__git_remotes)"
630 __gitcomp
"$(__git_refs)" "" "${cur#*:}"
634 case "${COMP_WORDS[0]}" in
635 git-fetch
) remote
="${COMP_WORDS[1]}" ;;
636 git
) remote
="${COMP_WORDS[2]}" ;;
638 __gitcomp
"$(__git_refs2 "$remote")"
647 local cur
="${COMP_WORDS[COMP_CWORD]}"
651 --stdout --attach --thread
653 --numbered --start-number
658 --full-index --binary
665 __git_complete_revlist
670 local cur
="${COMP_WORDS[COMP_CWORD]}"
673 __gitcomp
"--prune --aggressive"
682 __gitcomp
"$(__git_remotes)"
692 local cur
="${COMP_WORDS[COMP_CWORD]}"
696 oneline short medium full fuller email raw
697 " "" "${cur##--pretty=}"
702 relative iso8601 rfc2822 short local default
703 " "" "${cur##--date=}"
708 --max-count= --max-age= --since= --after=
709 --min-age= --before= --until=
710 --root --topo-order --date-order --reverse
712 --abbrev-commit --abbrev=
713 --relative-date --date=
714 --author= --committer= --grep=
716 --pretty= --name-status --name-only --raw
718 --left-right --cherry-pick
723 __git_complete_revlist
728 local cur
="${COMP_WORDS[COMP_CWORD]}"
729 case "${COMP_WORDS[COMP_CWORD-1]}" in
731 __gitcomp
"$(__git_merge_strategies)"
736 __gitcomp
"$(__git_merge_strategies)" "" "${cur##--strategy=}"
741 --no-commit --no-summary --squash --strategy
745 __gitcomp
"$(__git_refs)"
750 __gitcomp
"$(__git_refs)"
755 __gitcomp
"--tags --all --stdin"
760 local cur
="${COMP_WORDS[COMP_CWORD]}"
762 case "${COMP_WORDS[0]},$COMP_CWORD" in
764 __gitcomp
"$(__git_remotes)"
767 __gitcomp
"$(__git_remotes)"
771 case "${COMP_WORDS[0]}" in
772 git-pull
) remote
="${COMP_WORDS[1]}" ;;
773 git
) remote
="${COMP_WORDS[2]}" ;;
775 __gitcomp
"$(__git_refs "$remote")"
782 local cur
="${COMP_WORDS[COMP_CWORD]}"
784 case "${COMP_WORDS[0]},$COMP_CWORD" in
786 __gitcomp
"$(__git_remotes)"
789 __gitcomp
"$(__git_remotes)"
795 case "${COMP_WORDS[0]}" in
796 git-push
) remote
="${COMP_WORDS[1]}" ;;
797 git
) remote
="${COMP_WORDS[2]}" ;;
799 __gitcomp
"$(__git_refs "$remote")" "" "${cur#*:}"
802 __gitcomp
"$(__git_refs)" + "${cur#+}"
805 __gitcomp
"$(__git_refs)"
814 local cur
="${COMP_WORDS[COMP_CWORD]}"
815 if [ -d .dotest
] ||
[ -d .git
/.dotest-merge
]; then
816 __gitcomp
"--continue --skip --abort"
819 case "${COMP_WORDS[COMP_CWORD-1]}" in
821 __gitcomp
"$(__git_merge_strategies)"
826 __gitcomp
"$(__git_merge_strategies)" "" "${cur##--strategy=}"
830 __gitcomp
"--onto --merge --strategy"
833 __gitcomp
"$(__git_refs)"
838 local cur
="${COMP_WORDS[COMP_CWORD]}"
839 local prv
="${COMP_WORDS[COMP_CWORD-1]}"
842 __gitcomp
"$(__git_remotes)"
846 __gitcomp
"$(__git_refs)"
850 local remote
="${prv#remote.}"
851 remote
="${remote%.fetch}"
852 __gitcomp
"$(__git_refs_remotes "$remote")"
856 local remote
="${prv#remote.}"
857 remote
="${remote%.push}"
858 __gitcomp
"$(git --git-dir="$
(__gitdir
)" \
859 for-each-ref --format='%(refname):%(refname)' \
863 pull.twohead|pull.octopus
)
864 __gitcomp
"$(__git_merge_strategies)"
867 color.branch|color.
diff|color.status
)
868 __gitcomp
"always never auto"
873 black red green yellow blue magenta cyan white
874 bold dim ul blink reverse
886 --global --system --file=
888 --get --get-all --get-regexp
889 --add --unset --unset-all
890 --remove-section --rename-section
895 local pfx
="${cur%.*}."
897 __gitcomp
"remote merge" "$pfx" "$cur"
901 local pfx
="${cur%.*}."
903 __gitcomp
"$(__git_heads)" "$pfx" "$cur" "."
907 local pfx
="${cur%.*}."
910 url fetch push skipDefaultUpdate
911 receivepack uploadpack tagopt
916 local pfx
="${cur%.*}."
918 __gitcomp
"$(__git_remotes)" "$pfx" "$cur" "."
927 core.preferSymlinkRefs
928 core.logAllRefUpdates
929 core.loosecompression
930 core.repositoryFormatVersion
931 core.sharedRepository
932 core.warnAmbiguousRefs
935 core.packedGitWindowSize
950 color.diff.whitespace
956 color.status.untracked
965 gitcvs.dbname gitcvs.dbdriver gitcvs.dbuser gitcvs.dvpass
968 gc.reflogexpireunreachable
981 i18n.logOutputEncoding
994 repack.useDeltaBaseOffset
1000 receive.denyNonFastForwards
1004 whatchanged.difftree
1012 while [ $c -lt $COMP_CWORD ]; do
1013 i
="${COMP_WORDS[c]}"
1015 add|
rm|show|prune|update
) command="$i"; break ;;
1020 if [ $c -eq $COMP_CWORD -a -z "$command" ]; then
1021 __gitcomp
"add rm show prune update"
1027 __gitcomp
"$(__git_remotes)"
1030 local i c
='' IFS
=$
'\n'
1031 for i
in $
(git
--git-dir="$(__gitdir)" config
--list); do
1049 local cur
="${COMP_WORDS[COMP_CWORD]}"
1052 __gitcomp
"--mixed --hard --soft"
1056 __gitcomp
"$(__git_refs)"
1061 local cur
="${COMP_WORDS[COMP_CWORD]}"
1065 --max-count= --max-age= --since= --after=
1066 --min-age= --before= --until=
1068 --author= --committer= --grep=
1071 --numbered --summary
1076 __git_complete_revlist
1081 local cur
="${COMP_WORDS[COMP_CWORD]}"
1085 oneline short medium full fuller email raw
1086 " "" "${cur##--pretty=}"
1090 __gitcomp
"--pretty="
1099 __gitcomp
'list show apply clear'
1105 while [ $c -lt $COMP_CWORD ]; do
1106 i
="${COMP_WORDS[c]}"
1108 add|status|init|update
) command="$i"; break ;;
1113 if [ $c -eq $COMP_CWORD -a -z "$command" ]; then
1114 local cur
="${COMP_WORDS[COMP_CWORD]}"
1117 __gitcomp
"--quiet --cached"
1120 __gitcomp
"add status init update"
1130 while [ $c -lt $COMP_CWORD ]; do
1131 i
="${COMP_WORDS[c]}"
1134 __gitcomp
"$(__git_tags)"
1144 case "${COMP_WORDS[COMP_CWORD-1]}" in
1150 __gitcomp
"$(__git_tags)"
1156 __gitcomp
"$(__git_refs)"
1163 local i c
=1 command __git_dir
1165 while [ $c -lt $COMP_CWORD ]; do
1166 i
="${COMP_WORDS[c]}"
1168 --git-dir=*) __git_dir
="${i#--git-dir=}" ;;
1169 --bare) __git_dir
="." ;;
1170 --version|
--help|
-p|
--paginate) ;;
1171 *) command="$i"; break ;;
1176 if [ $c -eq $COMP_CWORD -a -z "$command" ]; then
1177 case "${COMP_WORDS[COMP_CWORD]}" in
1178 --*=*) COMPREPLY
=() ;;
1187 *) __gitcomp
"$(__git_commands) $(__git_aliases)" ;;
1192 local expansion
=$
(__git_aliased_command
"$command")
1193 [ "$expansion" ] && command="$expansion"
1198 apply
) _git_apply
;;
1199 bisect
) _git_bisect
;;
1200 bundle
) _git_bundle
;;
1201 branch
) _git_branch
;;
1202 checkout
) _git_checkout
;;
1203 cherry
) _git_cherry
;;
1204 cherry-pick
) _git_cherry_pick
;;
1205 commit
) _git_commit
;;
1206 config
) _git_config
;;
1207 describe
) _git_describe
;;
1209 fetch
) _git_fetch
;;
1210 format-patch
) _git_format_patch
;;
1213 ls-remote
) _git_ls_remote
;;
1214 ls-tree
) _git_ls_tree
;;
1216 merge-base
) _git_merge_base
;;
1217 name-rev
) _git_name_rev
;;
1220 rebase
) _git_rebase
;;
1221 remote
) _git_remote
;;
1222 reset) _git_reset
;;
1223 shortlog
) _git_shortlog
;;
1225 show-branch
) _git_log
;;
1226 stash
) _git_stash
;;
1227 submodule
) _git_submodule
;;
1229 whatchanged
) _git_log
;;
1236 local cur
="${COMP_WORDS[COMP_CWORD]}"
1239 __gitcomp
"--not --all"
1243 __git_complete_revlist
1246 complete
-o default
-o nospace
-F _git git
1247 complete
-o default
-o nospace
-F _gitk gitk
1248 complete
-o default
-o nospace
-F _git_am git-am
1249 complete
-o default
-o nospace
-F _git_apply git-apply
1250 complete
-o default
-o nospace
-F _git_bisect git-bisect
1251 complete
-o default
-o nospace
-F _git_branch git-branch
1252 complete
-o default
-o nospace
-F _git_bundle git-bundle
1253 complete
-o default
-o nospace
-F _git_checkout git-checkout
1254 complete
-o default
-o nospace
-F _git_cherry git-cherry
1255 complete
-o default
-o nospace
-F _git_cherry_pick git-cherry-pick
1256 complete
-o default
-o nospace
-F _git_commit git-commit
1257 complete
-o default
-o nospace
-F _git_describe git-describe
1258 complete
-o default
-o nospace
-F _git_diff git-diff
1259 complete
-o default
-o nospace
-F _git_fetch git-fetch
1260 complete
-o default
-o nospace
-F _git_format_patch git-format-patch
1261 complete
-o default
-o nospace
-F _git_gc git-gc
1262 complete
-o default
-o nospace
-F _git_log git-log
1263 complete
-o default
-o nospace
-F _git_ls_remote git-ls-remote
1264 complete
-o default
-o nospace
-F _git_ls_tree git-ls-tree
1265 complete
-o default
-o nospace
-F _git_merge git-merge
1266 complete
-o default
-o nospace
-F _git_merge_base git-merge-base
1267 complete
-o default
-o nospace
-F _git_name_rev git-name-rev
1268 complete
-o default
-o nospace
-F _git_pull git-pull
1269 complete
-o default
-o nospace
-F _git_push git-push
1270 complete
-o default
-o nospace
-F _git_rebase git-rebase
1271 complete
-o default
-o nospace
-F _git_config git-config
1272 complete
-o default
-o nospace
-F _git_remote git-remote
1273 complete
-o default
-o nospace
-F _git_reset git-reset
1274 complete
-o default
-o nospace
-F _git_shortlog git-shortlog
1275 complete
-o default
-o nospace
-F _git_show git-show
1276 complete
-o default
-o nospace
-F _git_stash git-stash
1277 complete
-o default
-o nospace
-F _git_submodule git-submodule
1278 complete
-o default
-o nospace
-F _git_log git-show-branch
1279 complete
-o default
-o nospace
-F _git_tag git-tag
1280 complete
-o default
-o nospace
-F _git_log git-whatchanged
1282 # The following are necessary only for Cygwin, and only are needed
1283 # when the user has tab-completed the executable name and consequently
1284 # included the '.exe' suffix.
1286 if [ Cygwin
= "$(uname -o 2>/dev/null)" ]; then
1287 complete
-o default
-o nospace
-F _git_add git-add.exe
1288 complete
-o default
-o nospace
-F _git_apply git-apply.exe
1289 complete
-o default
-o nospace
-F _git git.exe
1290 complete
-o default
-o nospace
-F _git_branch git-branch.exe
1291 complete
-o default
-o nospace
-F _git_bundle git-bundle.exe
1292 complete
-o default
-o nospace
-F _git_cherry git-cherry.exe
1293 complete
-o default
-o nospace
-F _git_describe git-describe.exe
1294 complete
-o default
-o nospace
-F _git_diff git-diff.exe
1295 complete
-o default
-o nospace
-F _git_format_patch git-format-patch.exe
1296 complete
-o default
-o nospace
-F _git_log git-log.exe
1297 complete
-o default
-o nospace
-F _git_ls_tree git-ls-tree.exe
1298 complete
-o default
-o nospace
-F _git_merge_base git-merge-base.exe
1299 complete
-o default
-o nospace
-F _git_name_rev git-name-rev.exe
1300 complete
-o default
-o nospace
-F _git_push git-push.exe
1301 complete
-o default
-o nospace
-F _git_config git-config
1302 complete
-o default
-o nospace
-F _git_shortlog git-shortlog.exe
1303 complete
-o default
-o nospace
-F _git_show git-show.exe
1304 complete
-o default
-o nospace
-F _git_log git-show-branch.exe
1305 complete
-o default
-o nospace
-F _git_tag git-tag.exe
1306 complete
-o default
-o nospace
-F _git_log git-whatchanged.exe