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" ]
73 if test -f "$g/../.dotest/rebasing"
76 elif test -f "$g/../.dotest/applying"
82 b
="$(git symbolic-ref HEAD 2>/dev/null)"
83 elif [ -f "$g/.dotest-merge/interactive" ]
86 b
="$(cat "$g/.dotest-merge
/head-name
")"
87 elif [ -d "$g/.dotest-merge" ]
90 b
="$(cat "$g/.dotest-merge
/head-name
")"
91 elif [ -f "$g/MERGE_HEAD" ]
94 b
="$(git symbolic-ref HEAD 2>/dev/null)"
96 if [ -f "$g/BISECT_LOG" ]
100 if ! b
="$(git symbolic-ref HEAD 2>/dev/null)"
102 if ! b
="$(git describe --exact-match HEAD 2>/dev/null)"
104 b
="$(cut -c1-7 "$g/HEAD
")..."
110 printf "$1" "${b##refs/heads/}$r"
112 printf " (%s)" "${b##refs/heads/}$r"
119 local all c s
=$
'\n' IFS
=' '$
'\t'$
'\n'
120 local cur
="${COMP_WORDS[COMP_CWORD]}"
121 if [ $# -gt 2 ]; then
126 --*=*) all
="$all$c$4$s" ;;
127 *.
) all
="$all$c$4$s" ;;
128 *) all
="$all$c$4 $s" ;;
132 COMPREPLY
=($
(compgen
-P "$2" -W "$all" -- "$cur"))
138 local cmd i is_hash
=y dir
="$(__gitdir "$1")"
139 if [ -d "$dir" ]; then
140 for i
in $
(git
--git-dir="$dir" \
141 for-each-ref
--format='%(refname)' \
143 echo "${i#refs/heads/}"
147 for i
in $
(git-ls-remote
"$1" 2>/dev
/null
); do
148 case "$is_hash,$i" in
151 n
,refs
/heads
/*) is_hash
=y
; echo "${i#refs/heads/}" ;;
152 n
,*) is_hash
=y
; echo "$i" ;;
159 local cmd i is_hash
=y dir
="$(__gitdir "$1")"
160 if [ -d "$dir" ]; then
161 for i
in $
(git
--git-dir="$dir" \
162 for-each-ref
--format='%(refname)' \
164 echo "${i#refs/tags/}"
168 for i
in $
(git-ls-remote
"$1" 2>/dev
/null
); do
169 case "$is_hash,$i" in
172 n
,refs
/tags
/*) is_hash
=y
; echo "${i#refs/tags/}" ;;
173 n
,*) is_hash
=y
; echo "$i" ;;
180 local cmd i is_hash
=y dir
="$(__gitdir "$1")"
181 if [ -d "$dir" ]; then
182 if [ -e "$dir/HEAD" ]; then echo HEAD
; fi
183 for i
in $
(git
--git-dir="$dir" \
184 for-each-ref
--format='%(refname)' \
185 refs
/tags refs
/heads refs
/remotes
); do
187 refs
/tags
/*) echo "${i#refs/tags/}" ;;
188 refs
/heads
/*) echo "${i#refs/heads/}" ;;
189 refs
/remotes
/*) echo "${i#refs/remotes/}" ;;
195 for i
in $
(git-ls-remote
"$dir" 2>/dev
/null
); do
196 case "$is_hash,$i" in
199 n
,refs
/tags
/*) is_hash
=y
; echo "${i#refs/tags/}" ;;
200 n
,refs
/heads
/*) is_hash
=y
; echo "${i#refs/heads/}" ;;
201 n
,refs
/remotes
/*) is_hash
=y
; echo "${i#refs/remotes/}" ;;
202 n
,*) is_hash
=y
; echo "$i" ;;
210 for i
in $
(__git_refs
"$1"); do
215 __git_refs_remotes
()
217 local cmd i is_hash
=y
218 for i
in $
(git-ls-remote
"$1" 2>/dev
/null
); do
219 case "$is_hash,$i" in
222 echo "$i:refs/remotes/$1/${i#refs/heads/}"
226 n
,refs
/tags
/*) is_hash
=y
;;
234 local i ngoff IFS
=$
'\n' d
="$(__gitdir)"
235 shopt -q nullglob || ngoff
=1
237 for i
in "$d/remotes"/*; do
238 echo ${i#$d/remotes/}
240 [ "$ngoff" ] && shopt -u nullglob
241 for i
in $
(git
--git-dir="$d" config
--list); do
251 __git_merge_strategies
()
253 if [ -n "$__git_merge_strategylist" ]; then
254 echo "$__git_merge_strategylist"
257 sed -n "/^all_strategies='/{
258 s/^all_strategies='//
262 }" "$(git --exec-path)/git-merge"
264 __git_merge_strategylist
=
265 __git_merge_strategylist
="$(__git_merge_strategies 2>/dev/null)"
267 __git_complete_file
()
269 local pfx
ls ref cur
="${COMP_WORDS[COMP_CWORD]}"
285 COMPREPLY
=($
(compgen
-P "$pfx" \
286 -W "$(git --git-dir="$
(__gitdir
)" ls-tree "$ls" \
287 | sed '/^100... blob /s,^.* ,,
296 __gitcomp
"$(__git_refs)"
301 __git_complete_revlist
()
303 local pfx cur
="${COMP_WORDS[COMP_CWORD]}"
308 __gitcomp
"$(__git_refs)" "$pfx" "$cur"
313 __gitcomp
"$(__git_refs)" "$pfx" "$cur"
319 __gitcomp
"$(__git_refs)"
326 if [ -n "$__git_commandlist" ]; then
327 echo "$__git_commandlist"
331 for i
in $
(git
help -a|
egrep '^ ')
334 *--*) : helper pattern
;;
335 applymbox
) : ask gittus
;;
336 applypatch
) : ask gittus
;;
337 archimport
) : import
;;
338 cat-file
) : plumbing
;;
339 check-attr
) : plumbing
;;
340 check-ref-format
) : plumbing
;;
341 commit-tree
) : plumbing
;;
342 cvsexportcommit
) : export;;
343 cvsimport
) : import
;;
344 cvsserver
) : daemon
;;
346 diff-files
) : plumbing
;;
347 diff-index
) : plumbing
;;
348 diff-tree
) : plumbing
;;
349 fast-import
) : import
;;
350 fsck-objects
) : plumbing
;;
351 fetch-pack
) : plumbing
;;
352 fmt-merge-msg
) : plumbing
;;
353 for-each-ref
) : plumbing
;;
354 hash-object
) : plumbing
;;
355 http-
*) : transport
;;
356 index-pack
) : plumbing
;;
357 init-db
) : deprecated
;;
358 local-fetch
) : plumbing
;;
359 mailinfo
) : plumbing
;;
360 mailsplit
) : plumbing
;;
361 merge-
*) : plumbing
;;
364 pack-objects
) : plumbing
;;
365 pack-redundant
) : plumbing
;;
366 pack-refs
) : plumbing
;;
367 parse-remote
) : plumbing
;;
368 patch-id
) : plumbing
;;
369 peek-remote
) : plumbing
;;
371 prune-packed
) : plumbing
;;
372 quiltimport
) : import
;;
373 read-tree
) : plumbing
;;
374 receive-pack
) : plumbing
;;
376 repo-config
) : deprecated
;;
378 rev-list
) : plumbing
;;
379 rev-parse
) : plumbing
;;
380 runstatus
) : plumbing
;;
381 sh-setup
) : internal
;;
383 send-pack
) : plumbing
;;
384 show-index
) : plumbing
;;
386 stripspace
) : plumbing
;;
387 symbolic-ref
) : plumbing
;;
388 tar-tree
) : deprecated
;;
389 unpack-file
) : plumbing
;;
390 unpack-objects
) : plumbing
;;
391 update-index
) : plumbing
;;
392 update-ref
) : plumbing
;;
393 update-server-info
) : daemon
;;
394 upload-archive
) : plumbing
;;
395 upload-pack
) : plumbing
;;
396 write-tree
) : plumbing
;;
397 verify-tag
) : plumbing
;;
403 __git_commandlist
="$(__git_commands 2>/dev/null)"
408 for i
in $
(git
--git-dir="$(__gitdir)" config
--list); do
418 __git_aliased_command
()
420 local word cmdline
=$
(git
--git-dir="$(__gitdir)" \
421 config
--get "alias.$1")
422 for word
in $cmdline; do
423 if [ "${word##-*}" ]; then
430 __git_find_subcommand
()
432 local word subcommand c
=1
434 while [ $c -lt $COMP_CWORD ]; do
435 word
="${COMP_WORDS[c]}"
436 for subcommand
in $1; do
437 if [ "$subcommand" = "$word" ]; then
446 __git_whitespacelist
="nowarn warn error error-all strip"
450 local cur
="${COMP_WORDS[COMP_CWORD]}"
451 if [ -d .dotest
]; then
452 __gitcomp
"--skip --resolved"
457 __gitcomp
"$__git_whitespacelist" "" "${cur##--whitespace=}"
462 --signoff --utf8 --binary --3way --interactive
472 local cur
="${COMP_WORDS[COMP_CWORD]}"
475 __gitcomp
"$__git_whitespacelist" "" "${cur##--whitespace=}"
480 --stat --numstat --summary --check --index
481 --cached --index-info --reverse --reject --unidiff-zero
482 --apply --no-add --exclude=
483 --whitespace= --inaccurate-eof --verbose
492 local cur
="${COMP_WORDS[COMP_CWORD]}"
495 __gitcomp
"--interactive --refresh"
503 local subcommands
="start bad good reset visualize replay log"
504 local subcommand
="$(__git_find_subcommand "$subcommands")"
505 if [ -z "$subcommand" ]; then
506 __gitcomp
"$subcommands"
510 case "$subcommand" in
512 __gitcomp
"$(__git_refs)"
522 local i c
=1 only_local_ref
="n" has_r
="n"
524 while [ $c -lt $COMP_CWORD ]; do
527 -d|
-m) only_local_ref
="y" ;;
533 case "${COMP_WORDS[COMP_CWORD]}" in
534 --*=*) COMPREPLY
=() ;;
537 --color --no-color --verbose --abbrev= --no-abbrev
542 if [ $only_local_ref = "y" -a $has_r = "n" ]; then
543 __gitcomp
"$(__git_heads)"
545 __gitcomp
"$(__git_refs)"
553 local mycword
="$COMP_CWORD"
554 case "${COMP_WORDS[0]}" in
556 local cmd
="${COMP_WORDS[2]}"
557 mycword
="$((mycword-1))"
560 local cmd
="${COMP_WORDS[1]}"
565 __gitcomp
"create list-heads verify unbundle"
573 __git_complete_revlist
582 __gitcomp
"$(__git_refs)"
587 __gitcomp
"$(__git_refs)"
592 local cur
="${COMP_WORDS[COMP_CWORD]}"
595 __gitcomp
"--edit --no-commit"
598 __gitcomp
"$(__git_refs)"
605 local cur
="${COMP_WORDS[COMP_CWORD]}"
609 --all --author= --signoff --verify --no-verify
610 --edit --amend --include --only
619 __gitcomp
"$(__git_refs)"
624 local cur
="${COMP_WORDS[COMP_CWORD]}"
627 __gitcomp
"--cached --stat --numstat --shortstat --summary
628 --patch-with-stat --name-only --name-status --color
629 --no-color --color-words --no-renames --check
630 --full-index --binary --abbrev --diff-filter
631 --find-copies-harder --pickaxe-all --pickaxe-regex
632 --text --ignore-space-at-eol --ignore-space-change
633 --ignore-all-space --exit-code --quiet --ext-diff
643 __gitcomp
"$(__git_refs)"
648 local cur
="${COMP_WORDS[COMP_CWORD]}"
650 case "${COMP_WORDS[0]},$COMP_CWORD" in
652 __gitcomp
"$(__git_remotes)"
655 __gitcomp
"$(__git_remotes)"
660 __gitcomp
"$(__git_refs)" "" "${cur#*:}"
664 case "${COMP_WORDS[0]}" in
665 git-fetch
) remote
="${COMP_WORDS[1]}" ;;
666 git
) remote
="${COMP_WORDS[2]}" ;;
668 __gitcomp
"$(__git_refs2 "$remote")"
677 local cur
="${COMP_WORDS[COMP_CWORD]}"
681 --stdout --attach --thread
683 --numbered --start-number
688 --full-index --binary
695 __git_complete_revlist
700 local cur
="${COMP_WORDS[COMP_CWORD]}"
703 __gitcomp
"--prune --aggressive"
712 __gitcomp
"$(__git_remotes)"
722 local cur
="${COMP_WORDS[COMP_CWORD]}"
726 oneline short medium full fuller email raw
727 " "" "${cur##--pretty=}"
732 relative iso8601 rfc2822 short local default
733 " "" "${cur##--date=}"
738 --max-count= --max-age= --since= --after=
739 --min-age= --before= --until=
740 --root --topo-order --date-order --reverse
742 --abbrev-commit --abbrev=
743 --relative-date --date=
744 --author= --committer= --grep=
746 --pretty= --name-status --name-only --raw
748 --left-right --cherry-pick
753 __git_complete_revlist
758 local cur
="${COMP_WORDS[COMP_CWORD]}"
759 case "${COMP_WORDS[COMP_CWORD-1]}" in
761 __gitcomp
"$(__git_merge_strategies)"
766 __gitcomp
"$(__git_merge_strategies)" "" "${cur##--strategy=}"
771 --no-commit --no-summary --squash --strategy
775 __gitcomp
"$(__git_refs)"
780 __gitcomp
"$(__git_refs)"
785 __gitcomp
"--tags --all --stdin"
790 local cur
="${COMP_WORDS[COMP_CWORD]}"
792 case "${COMP_WORDS[0]},$COMP_CWORD" in
794 __gitcomp
"$(__git_remotes)"
797 __gitcomp
"$(__git_remotes)"
801 case "${COMP_WORDS[0]}" in
802 git-pull
) remote
="${COMP_WORDS[1]}" ;;
803 git
) remote
="${COMP_WORDS[2]}" ;;
805 __gitcomp
"$(__git_refs "$remote")"
812 local cur
="${COMP_WORDS[COMP_CWORD]}"
814 case "${COMP_WORDS[0]},$COMP_CWORD" in
816 __gitcomp
"$(__git_remotes)"
819 __gitcomp
"$(__git_remotes)"
825 case "${COMP_WORDS[0]}" in
826 git-push
) remote
="${COMP_WORDS[1]}" ;;
827 git
) remote
="${COMP_WORDS[2]}" ;;
829 __gitcomp
"$(__git_refs "$remote")" "" "${cur#*:}"
832 __gitcomp
"$(__git_refs)" + "${cur#+}"
835 __gitcomp
"$(__git_refs)"
844 local cur
="${COMP_WORDS[COMP_CWORD]}" dir
="$(__gitdir)"
845 if [ -d .dotest
] ||
[ -d "$dir"/.dotest-merge
]; then
846 __gitcomp
"--continue --skip --abort"
849 case "${COMP_WORDS[COMP_CWORD-1]}" in
851 __gitcomp
"$(__git_merge_strategies)"
856 __gitcomp
"$(__git_merge_strategies)" "" "${cur##--strategy=}"
860 __gitcomp
"--onto --merge --strategy"
863 __gitcomp
"$(__git_refs)"
868 local cur
="${COMP_WORDS[COMP_CWORD]}"
869 local prv
="${COMP_WORDS[COMP_CWORD-1]}"
872 __gitcomp
"$(__git_remotes)"
876 __gitcomp
"$(__git_refs)"
880 local remote
="${prv#remote.}"
881 remote
="${remote%.fetch}"
882 __gitcomp
"$(__git_refs_remotes "$remote")"
886 local remote
="${prv#remote.}"
887 remote
="${remote%.push}"
888 __gitcomp
"$(git --git-dir="$
(__gitdir
)" \
889 for-each-ref --format='%(refname):%(refname)' \
893 pull.twohead|pull.octopus
)
894 __gitcomp
"$(__git_merge_strategies)"
897 color.branch|color.
diff|color.status
)
898 __gitcomp
"always never auto"
903 black red green yellow blue magenta cyan white
904 bold dim ul blink reverse
916 --global --system --file=
918 --get --get-all --get-regexp
919 --add --unset --unset-all
920 --remove-section --rename-section
925 local pfx
="${cur%.*}."
927 __gitcomp
"remote merge" "$pfx" "$cur"
931 local pfx
="${cur%.*}."
933 __gitcomp
"$(__git_heads)" "$pfx" "$cur" "."
937 local pfx
="${cur%.*}."
940 url fetch push skipDefaultUpdate
941 receivepack uploadpack tagopt
946 local pfx
="${cur%.*}."
948 __gitcomp
"$(__git_remotes)" "$pfx" "$cur" "."
957 core.preferSymlinkRefs
958 core.logAllRefUpdates
959 core.loosecompression
960 core.repositoryFormatVersion
961 core.sharedRepository
962 core.warnAmbiguousRefs
964 core.packedGitWindowSize
979 color.diff.whitespace
985 color.status.untracked
994 gitcvs.dbname gitcvs.dbdriver gitcvs.dbuser gitcvs.dvpass
997 gc.reflogexpireunreachable
1010 i18n.logOutputEncoding
1020 pack.deltaCacheLimit
1023 repack.useDeltaBaseOffset
1027 transfer.unpackLimit
1029 receive.denyNonFastForwards
1033 whatchanged.difftree
1040 local subcommands
="add rm show prune update"
1041 local subcommand
="$(__git_find_subcommand "$subcommands")"
1042 if [ -z "$subcommand" ]; then
1046 case "$subcommand" in
1048 __gitcomp
"$(__git_remotes)"
1051 local i c
='' IFS
=$
'\n'
1052 for i
in $
(git
--git-dir="$(__gitdir)" config
--list); do
1070 local cur
="${COMP_WORDS[COMP_CWORD]}"
1073 __gitcomp
"--mixed --hard --soft"
1077 __gitcomp
"$(__git_refs)"
1082 local cur
="${COMP_WORDS[COMP_CWORD]}"
1086 --max-count= --max-age= --since= --after=
1087 --min-age= --before= --until=
1089 --author= --committer= --grep=
1092 --numbered --summary
1097 __git_complete_revlist
1102 local cur
="${COMP_WORDS[COMP_CWORD]}"
1106 oneline short medium full fuller email raw
1107 " "" "${cur##--pretty=}"
1111 __gitcomp
"--pretty="
1120 local subcommands
='save list show apply clear drop pop create'
1121 if [ -z "$(__git_find_subcommand "$subcommands")" ]; then
1122 __gitcomp
"$subcommands"
1128 local subcommands
="add status init update"
1129 if [ -z "$(__git_find_subcommand "$subcommands")" ]; then
1130 local cur
="${COMP_WORDS[COMP_CWORD]}"
1133 __gitcomp
"--quiet --cached"
1136 __gitcomp
"$subcommands"
1146 init fetch clone rebase dcommit log find-rev
1147 set-tree commit-diff info create-ignore propget
1148 proplist show-ignore show-externals
1150 local subcommand
="$(__git_find_subcommand "$subcommands")"
1151 if [ -z "$subcommand" ]; then
1152 __gitcomp
"$subcommands"
1154 local remote_opts
="--username= --config-dir= --no-auth-cache"
1156 --follow-parent --authors-file= --repack=
1157 --no-metadata --use-svm-props --use-svnsync-props
1158 --log-window-size= --no-checkout --quiet
1159 --repack-flags --user-log-author $remote_opts
1162 --template= --shared= --trunk= --tags=
1163 --branches= --stdlayout --minimize-url
1164 --no-metadata --use-svm-props --use-svnsync-props
1165 --rewrite-root= $remote_opts
1168 --edit --rmdir --find-copies-harder --copy-similarity=
1171 local cur
="${COMP_WORDS[COMP_CWORD]}"
1172 case "$subcommand,$cur" in
1174 __gitcomp
"--revision= --fetch-all $fc_opts"
1177 __gitcomp
"--revision= $fc_opts $init_opts"
1180 __gitcomp
"$init_opts"
1184 --merge --strategy= --verbose --dry-run
1185 --fetch-all --no-rebase $cmt_opts $fc_opts
1189 __gitcomp
"--stdin $cmt_opts $fc_opts"
1191 create-ignore
,--*|propget
,--*|proplist
,--*|show-ignore
,--*|\
1193 __gitcomp
"--revision="
1197 --limit= --revision= --verbose --incremental
1198 --oneline --show-commit --non-recursive
1204 --merge --verbose --strategy= --local
1205 --fetch-all $fc_opts
1209 __gitcomp
"--message= --file= --revision= $cmt_opts"
1224 while [ $c -lt $COMP_CWORD ]; do
1225 i
="${COMP_WORDS[c]}"
1228 __gitcomp
"$(__git_tags)"
1238 case "${COMP_WORDS[COMP_CWORD-1]}" in
1244 __gitcomp
"$(__git_tags)"
1250 __gitcomp
"$(__git_refs)"
1257 local i c
=1 command __git_dir
1259 while [ $c -lt $COMP_CWORD ]; do
1260 i
="${COMP_WORDS[c]}"
1262 --git-dir=*) __git_dir
="${i#--git-dir=}" ;;
1263 --bare) __git_dir
="." ;;
1264 --version|
--help|
-p|
--paginate) ;;
1265 *) command="$i"; break ;;
1270 if [ -z "$command" ]; then
1271 case "${COMP_WORDS[COMP_CWORD]}" in
1272 --*=*) COMPREPLY
=() ;;
1281 *) __gitcomp
"$(__git_commands) $(__git_aliases)" ;;
1286 local expansion
=$
(__git_aliased_command
"$command")
1287 [ "$expansion" ] && command="$expansion"
1292 apply
) _git_apply
;;
1293 bisect
) _git_bisect
;;
1294 bundle
) _git_bundle
;;
1295 branch
) _git_branch
;;
1296 checkout
) _git_checkout
;;
1297 cherry
) _git_cherry
;;
1298 cherry-pick
) _git_cherry_pick
;;
1299 commit
) _git_commit
;;
1300 config
) _git_config
;;
1301 describe
) _git_describe
;;
1303 fetch
) _git_fetch
;;
1304 format-patch
) _git_format_patch
;;
1307 ls-remote
) _git_ls_remote
;;
1308 ls-tree
) _git_ls_tree
;;
1310 merge-base
) _git_merge_base
;;
1311 name-rev
) _git_name_rev
;;
1314 rebase
) _git_rebase
;;
1315 remote
) _git_remote
;;
1316 reset) _git_reset
;;
1317 shortlog
) _git_shortlog
;;
1319 show-branch
) _git_log
;;
1320 stash
) _git_stash
;;
1321 submodule
) _git_submodule
;;
1324 whatchanged
) _git_log
;;
1331 local cur
="${COMP_WORDS[COMP_CWORD]}"
1334 __gitcomp
"--not --all"
1338 __git_complete_revlist
1341 complete
-o default
-o nospace
-F _git git
1342 complete
-o default
-o nospace
-F _gitk gitk
1343 complete
-o default
-o nospace
-F _git_am git-am
1344 complete
-o default
-o nospace
-F _git_apply git-apply
1345 complete
-o default
-o nospace
-F _git_bisect git-bisect
1346 complete
-o default
-o nospace
-F _git_branch git-branch
1347 complete
-o default
-o nospace
-F _git_bundle git-bundle
1348 complete
-o default
-o nospace
-F _git_checkout git-checkout
1349 complete
-o default
-o nospace
-F _git_cherry git-cherry
1350 complete
-o default
-o nospace
-F _git_cherry_pick git-cherry-pick
1351 complete
-o default
-o nospace
-F _git_commit git-commit
1352 complete
-o default
-o nospace
-F _git_describe git-describe
1353 complete
-o default
-o nospace
-F _git_diff git-diff
1354 complete
-o default
-o nospace
-F _git_fetch git-fetch
1355 complete
-o default
-o nospace
-F _git_format_patch git-format-patch
1356 complete
-o default
-o nospace
-F _git_gc git-gc
1357 complete
-o default
-o nospace
-F _git_log git-log
1358 complete
-o default
-o nospace
-F _git_ls_remote git-ls-remote
1359 complete
-o default
-o nospace
-F _git_ls_tree git-ls-tree
1360 complete
-o default
-o nospace
-F _git_merge git-merge
1361 complete
-o default
-o nospace
-F _git_merge_base git-merge-base
1362 complete
-o default
-o nospace
-F _git_name_rev git-name-rev
1363 complete
-o default
-o nospace
-F _git_pull git-pull
1364 complete
-o default
-o nospace
-F _git_push git-push
1365 complete
-o default
-o nospace
-F _git_rebase git-rebase
1366 complete
-o default
-o nospace
-F _git_config git-config
1367 complete
-o default
-o nospace
-F _git_remote git-remote
1368 complete
-o default
-o nospace
-F _git_reset git-reset
1369 complete
-o default
-o nospace
-F _git_shortlog git-shortlog
1370 complete
-o default
-o nospace
-F _git_show git-show
1371 complete
-o default
-o nospace
-F _git_stash git-stash
1372 complete
-o default
-o nospace
-F _git_submodule git-submodule
1373 complete
-o default
-o nospace
-F _git_svn git-svn
1374 complete
-o default
-o nospace
-F _git_log git-show-branch
1375 complete
-o default
-o nospace
-F _git_tag git-tag
1376 complete
-o default
-o nospace
-F _git_log git-whatchanged
1378 # The following are necessary only for Cygwin, and only are needed
1379 # when the user has tab-completed the executable name and consequently
1380 # included the '.exe' suffix.
1382 if [ Cygwin
= "$(uname -o 2>/dev/null)" ]; then
1383 complete
-o default
-o nospace
-F _git_add git-add.exe
1384 complete
-o default
-o nospace
-F _git_apply git-apply.exe
1385 complete
-o default
-o nospace
-F _git git.exe
1386 complete
-o default
-o nospace
-F _git_branch git-branch.exe
1387 complete
-o default
-o nospace
-F _git_bundle git-bundle.exe
1388 complete
-o default
-o nospace
-F _git_cherry git-cherry.exe
1389 complete
-o default
-o nospace
-F _git_describe git-describe.exe
1390 complete
-o default
-o nospace
-F _git_diff git-diff.exe
1391 complete
-o default
-o nospace
-F _git_format_patch git-format-patch.exe
1392 complete
-o default
-o nospace
-F _git_log git-log.exe
1393 complete
-o default
-o nospace
-F _git_ls_tree git-ls-tree.exe
1394 complete
-o default
-o nospace
-F _git_merge_base git-merge-base.exe
1395 complete
-o default
-o nospace
-F _git_name_rev git-name-rev.exe
1396 complete
-o default
-o nospace
-F _git_push git-push.exe
1397 complete
-o default
-o nospace
-F _git_config git-config
1398 complete
-o default
-o nospace
-F _git_shortlog git-shortlog.exe
1399 complete
-o default
-o nospace
-F _git_show git-show.exe
1400 complete
-o default
-o nospace
-F _git_log git-show-branch.exe
1401 complete
-o default
-o nospace
-F _git_tag git-tag.exe
1402 complete
-o default
-o nospace
-F _git_log git-whatchanged.exe