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 c IFS
=' '$
'\t'$
'\n'
122 --*=*) printf %s$
'\n' "$c$2" ;;
123 *.
) printf %s$
'\n' "$c$2" ;;
124 *) printf %s$
'\n' "$c$2 " ;;
131 local cur
="${COMP_WORDS[COMP_CWORD]}"
132 if [ $# -gt 2 ]; then
141 COMPREPLY
=($
(compgen
-P "$2" \
142 -W "$(__gitcomp_1 "$1" "$4")" \
150 local cmd i is_hash
=y dir
="$(__gitdir "$1")"
151 if [ -d "$dir" ]; then
152 for i
in $
(git
--git-dir="$dir" \
153 for-each-ref
--format='%(refname)' \
155 echo "${i#refs/heads/}"
159 for i
in $
(git ls-remote
"$1" 2>/dev
/null
); do
160 case "$is_hash,$i" in
163 n
,refs
/heads
/*) is_hash
=y
; echo "${i#refs/heads/}" ;;
164 n
,*) is_hash
=y
; echo "$i" ;;
171 local cmd i is_hash
=y dir
="$(__gitdir "$1")"
172 if [ -d "$dir" ]; then
173 for i
in $
(git
--git-dir="$dir" \
174 for-each-ref
--format='%(refname)' \
176 echo "${i#refs/tags/}"
180 for i
in $
(git ls-remote
"$1" 2>/dev
/null
); do
181 case "$is_hash,$i" in
184 n
,refs
/tags
/*) is_hash
=y
; echo "${i#refs/tags/}" ;;
185 n
,*) is_hash
=y
; echo "$i" ;;
192 local cmd i is_hash
=y dir
="$(__gitdir "$1")"
193 if [ -d "$dir" ]; then
194 if [ -e "$dir/HEAD" ]; then echo HEAD
; fi
195 for i
in $
(git
--git-dir="$dir" \
196 for-each-ref
--format='%(refname)' \
197 refs
/tags refs
/heads refs
/remotes
); do
199 refs
/tags
/*) echo "${i#refs/tags/}" ;;
200 refs
/heads
/*) echo "${i#refs/heads/}" ;;
201 refs
/remotes
/*) echo "${i#refs/remotes/}" ;;
207 for i
in $
(git ls-remote
"$dir" 2>/dev
/null
); do
208 case "$is_hash,$i" in
211 n
,refs
/tags
/*) is_hash
=y
; echo "${i#refs/tags/}" ;;
212 n
,refs
/heads
/*) is_hash
=y
; echo "${i#refs/heads/}" ;;
213 n
,refs
/remotes
/*) is_hash
=y
; echo "${i#refs/remotes/}" ;;
214 n
,*) is_hash
=y
; echo "$i" ;;
222 for i
in $
(__git_refs
"$1"); do
227 __git_refs_remotes
()
229 local cmd i is_hash
=y
230 for i
in $
(git ls-remote
"$1" 2>/dev
/null
); do
231 case "$is_hash,$i" in
234 echo "$i:refs/remotes/$1/${i#refs/heads/}"
238 n
,refs
/tags
/*) is_hash
=y
;;
246 local i ngoff IFS
=$
'\n' d
="$(__gitdir)"
247 shopt -q nullglob || ngoff
=1
249 for i
in "$d/remotes"/*; do
250 echo ${i#$d/remotes/}
252 [ "$ngoff" ] && shopt -u nullglob
253 for i
in $
(git
--git-dir="$d" config
--list); do
263 __git_merge_strategies
()
265 if [ -n "$__git_merge_strategylist" ]; then
266 echo "$__git_merge_strategylist"
269 sed -n "/^all_strategies='/{
270 s/^all_strategies='//
274 }" "$(git --exec-path)/git-merge"
276 __git_merge_strategylist
=
277 __git_merge_strategylist
="$(__git_merge_strategies 2>/dev/null)"
279 __git_complete_file
()
281 local pfx
ls ref cur
="${COMP_WORDS[COMP_CWORD]}"
297 COMPREPLY
=($
(compgen
-P "$pfx" \
298 -W "$(git --git-dir="$
(__gitdir
)" ls-tree "$ls" \
299 | sed '/^100... blob /s,^.* ,,
308 __gitcomp
"$(__git_refs)"
313 __git_complete_revlist
()
315 local pfx cur
="${COMP_WORDS[COMP_CWORD]}"
320 __gitcomp
"$(__git_refs)" "$pfx" "$cur"
325 __gitcomp
"$(__git_refs)" "$pfx" "$cur"
331 __gitcomp
"$(__git_refs)"
338 if [ -n "$__git_commandlist" ]; then
339 echo "$__git_commandlist"
343 for i
in $
(git
help -a|
egrep '^ ')
346 *--*) : helper pattern
;;
347 applymbox
) : ask gittus
;;
348 applypatch
) : ask gittus
;;
349 archimport
) : import
;;
350 cat-file
) : plumbing
;;
351 check-attr
) : plumbing
;;
352 check-ref-format
) : plumbing
;;
353 commit-tree
) : plumbing
;;
354 cvsexportcommit
) : export;;
355 cvsimport
) : import
;;
356 cvsserver
) : daemon
;;
358 diff-files
) : plumbing
;;
359 diff-index
) : plumbing
;;
360 diff-tree
) : plumbing
;;
361 fast-import
) : import
;;
362 fsck-objects
) : plumbing
;;
363 fetch-pack
) : plumbing
;;
364 fmt-merge-msg
) : plumbing
;;
365 for-each-ref
) : plumbing
;;
366 hash-object
) : plumbing
;;
367 http-
*) : transport
;;
368 index-pack
) : plumbing
;;
369 init-db
) : deprecated
;;
370 local-fetch
) : plumbing
;;
371 mailinfo
) : plumbing
;;
372 mailsplit
) : plumbing
;;
373 merge-
*) : plumbing
;;
376 pack-objects
) : plumbing
;;
377 pack-redundant
) : plumbing
;;
378 pack-refs
) : plumbing
;;
379 parse-remote
) : plumbing
;;
380 patch-id
) : plumbing
;;
381 peek-remote
) : plumbing
;;
383 prune-packed
) : plumbing
;;
384 quiltimport
) : import
;;
385 read-tree
) : plumbing
;;
386 receive-pack
) : plumbing
;;
388 repo-config
) : deprecated
;;
390 rev-list
) : plumbing
;;
391 rev-parse
) : plumbing
;;
392 runstatus
) : plumbing
;;
393 sh-setup
) : internal
;;
395 send-pack
) : plumbing
;;
396 show-index
) : plumbing
;;
398 stripspace
) : plumbing
;;
399 symbolic-ref
) : plumbing
;;
400 tar-tree
) : deprecated
;;
401 unpack-file
) : plumbing
;;
402 unpack-objects
) : plumbing
;;
403 update-index
) : plumbing
;;
404 update-ref
) : plumbing
;;
405 update-server-info
) : daemon
;;
406 upload-archive
) : plumbing
;;
407 upload-pack
) : plumbing
;;
408 write-tree
) : plumbing
;;
409 verify-tag
) : plumbing
;;
415 __git_commandlist
="$(__git_commands 2>/dev/null)"
420 for i
in $
(git
--git-dir="$(__gitdir)" config
--list); do
430 __git_aliased_command
()
432 local word cmdline
=$
(git
--git-dir="$(__gitdir)" \
433 config
--get "alias.$1")
434 for word
in $cmdline; do
435 if [ "${word##-*}" ]; then
442 __git_find_subcommand
()
444 local word subcommand c
=1
446 while [ $c -lt $COMP_CWORD ]; do
447 word
="${COMP_WORDS[c]}"
448 for subcommand
in $1; do
449 if [ "$subcommand" = "$word" ]; then
458 __git_has_doubledash
()
461 while [ $c -lt $COMP_CWORD ]; do
462 if [ "--" = "${COMP_WORDS[c]}" ]; then
470 __git_whitespacelist
="nowarn warn error error-all strip"
474 local cur
="${COMP_WORDS[COMP_CWORD]}"
475 if [ -d .dotest
]; then
476 __gitcomp
"--skip --resolved"
481 __gitcomp
"$__git_whitespacelist" "" "${cur##--whitespace=}"
486 --signoff --utf8 --binary --3way --interactive
496 local cur
="${COMP_WORDS[COMP_CWORD]}"
499 __gitcomp
"$__git_whitespacelist" "" "${cur##--whitespace=}"
504 --stat --numstat --summary --check --index
505 --cached --index-info --reverse --reject --unidiff-zero
506 --apply --no-add --exclude=
507 --whitespace= --inaccurate-eof --verbose
516 __git_has_doubledash
&& return
518 local cur
="${COMP_WORDS[COMP_CWORD]}"
522 --interactive --refresh --patch --update --dry-run
532 __git_has_doubledash
&& return
534 local subcommands
="start bad good reset visualize replay log"
535 local subcommand
="$(__git_find_subcommand "$subcommands")"
536 if [ -z "$subcommand" ]; then
537 __gitcomp
"$subcommands"
541 case "$subcommand" in
543 __gitcomp
"$(__git_refs)"
553 local i c
=1 only_local_ref
="n" has_r
="n"
555 while [ $c -lt $COMP_CWORD ]; do
558 -d|
-m) only_local_ref
="y" ;;
564 case "${COMP_WORDS[COMP_CWORD]}" in
565 --*=*) COMPREPLY
=() ;;
568 --color --no-color --verbose --abbrev= --no-abbrev
573 if [ $only_local_ref = "y" -a $has_r = "n" ]; then
574 __gitcomp
"$(__git_heads)"
576 __gitcomp
"$(__git_refs)"
584 local mycword
="$COMP_CWORD"
585 case "${COMP_WORDS[0]}" in
587 local cmd
="${COMP_WORDS[2]}"
588 mycword
="$((mycword-1))"
591 local cmd
="${COMP_WORDS[1]}"
596 __gitcomp
"create list-heads verify unbundle"
604 __git_complete_revlist
613 __gitcomp
"$(__git_refs)"
618 __gitcomp
"$(__git_refs)"
623 local cur
="${COMP_WORDS[COMP_CWORD]}"
626 __gitcomp
"--edit --no-commit"
629 __gitcomp
"$(__git_refs)"
636 __git_has_doubledash
&& return
638 local cur
="${COMP_WORDS[COMP_CWORD]}"
642 --all --author= --signoff --verify --no-verify
643 --edit --amend --include --only
652 __gitcomp
"$(__git_refs)"
657 __git_has_doubledash
&& return
659 local cur
="${COMP_WORDS[COMP_CWORD]}"
662 __gitcomp
"--cached --stat --numstat --shortstat --summary
663 --patch-with-stat --name-only --name-status --color
664 --no-color --color-words --no-renames --check
665 --full-index --binary --abbrev --diff-filter
666 --find-copies-harder --pickaxe-all --pickaxe-regex
667 --text --ignore-space-at-eol --ignore-space-change
668 --ignore-all-space --exit-code --quiet --ext-diff
670 --no-prefix --src-prefix= --dst-prefix=
671 --base --ours --theirs
681 __gitcomp
"$(__git_refs)"
686 local cur
="${COMP_WORDS[COMP_CWORD]}"
688 case "${COMP_WORDS[0]},$COMP_CWORD" in
690 __gitcomp
"$(__git_remotes)"
693 __gitcomp
"$(__git_remotes)"
698 __gitcomp
"$(__git_refs)" "" "${cur#*:}"
702 case "${COMP_WORDS[0]}" in
703 git-fetch
) remote
="${COMP_WORDS[1]}" ;;
704 git
) remote
="${COMP_WORDS[2]}" ;;
706 __gitcomp
"$(__git_refs2 "$remote")"
715 local cur
="${COMP_WORDS[COMP_CWORD]}"
719 --stdout --attach --thread
721 --numbered --start-number
726 --full-index --binary
729 --no-prefix --src-prefix= --dst-prefix=
734 __git_complete_revlist
739 local cur
="${COMP_WORDS[COMP_CWORD]}"
742 __gitcomp
"--prune --aggressive"
751 __gitcomp
"$(__git_remotes)"
761 __git_has_doubledash
&& return
763 local cur
="${COMP_WORDS[COMP_CWORD]}"
767 oneline short medium full fuller email raw
768 " "" "${cur##--pretty=}"
773 relative iso8601 rfc2822 short local default
774 " "" "${cur##--date=}"
779 --max-count= --max-age= --since= --after=
780 --min-age= --before= --until=
781 --root --topo-order --date-order --reverse
783 --abbrev-commit --abbrev=
784 --relative-date --date=
785 --author= --committer= --grep=
787 --pretty= --name-status --name-only --raw
789 --left-right --cherry-pick
795 __git_complete_revlist
800 local cur
="${COMP_WORDS[COMP_CWORD]}"
801 case "${COMP_WORDS[COMP_CWORD-1]}" in
803 __gitcomp
"$(__git_merge_strategies)"
808 __gitcomp
"$(__git_merge_strategies)" "" "${cur##--strategy=}"
813 --no-commit --no-stat --log --no-log --squash --strategy
817 __gitcomp
"$(__git_refs)"
822 __gitcomp
"$(__git_refs)"
827 __gitcomp
"--tags --all --stdin"
832 local cur
="${COMP_WORDS[COMP_CWORD]}"
834 case "${COMP_WORDS[0]},$COMP_CWORD" in
836 __gitcomp
"$(__git_remotes)"
839 __gitcomp
"$(__git_remotes)"
843 case "${COMP_WORDS[0]}" in
844 git-pull
) remote
="${COMP_WORDS[1]}" ;;
845 git
) remote
="${COMP_WORDS[2]}" ;;
847 __gitcomp
"$(__git_refs "$remote")"
854 local cur
="${COMP_WORDS[COMP_CWORD]}"
856 case "${COMP_WORDS[0]},$COMP_CWORD" in
858 __gitcomp
"$(__git_remotes)"
861 __gitcomp
"$(__git_remotes)"
867 case "${COMP_WORDS[0]}" in
868 git-push
) remote
="${COMP_WORDS[1]}" ;;
869 git
) remote
="${COMP_WORDS[2]}" ;;
871 __gitcomp
"$(__git_refs "$remote")" "" "${cur#*:}"
874 __gitcomp
"$(__git_refs)" + "${cur#+}"
877 __gitcomp
"$(__git_refs)"
886 local cur
="${COMP_WORDS[COMP_CWORD]}" dir
="$(__gitdir)"
887 if [ -d .dotest
] ||
[ -d "$dir"/.dotest-merge
]; then
888 __gitcomp
"--continue --skip --abort"
891 case "${COMP_WORDS[COMP_CWORD-1]}" in
893 __gitcomp
"$(__git_merge_strategies)"
898 __gitcomp
"$(__git_merge_strategies)" "" "${cur##--strategy=}"
902 __gitcomp
"--onto --merge --strategy --interactive"
905 __gitcomp
"$(__git_refs)"
910 local cur
="${COMP_WORDS[COMP_CWORD]}"
911 local prv
="${COMP_WORDS[COMP_CWORD-1]}"
914 __gitcomp
"$(__git_remotes)"
918 __gitcomp
"$(__git_refs)"
922 local remote
="${prv#remote.}"
923 remote
="${remote%.fetch}"
924 __gitcomp
"$(__git_refs_remotes "$remote")"
928 local remote
="${prv#remote.}"
929 remote
="${remote%.push}"
930 __gitcomp
"$(git --git-dir="$
(__gitdir
)" \
931 for-each-ref --format='%(refname):%(refname)' \
935 pull.twohead|pull.octopus
)
936 __gitcomp
"$(__git_merge_strategies)"
939 color.branch|color.
diff|color.status
)
940 __gitcomp
"always never auto"
945 black red green yellow blue magenta cyan white
946 bold dim ul blink reverse
958 --global --system --file=
960 --get --get-all --get-regexp
961 --add --unset --unset-all
962 --remove-section --rename-section
967 local pfx
="${cur%.*}."
969 __gitcomp
"remote merge" "$pfx" "$cur"
973 local pfx
="${cur%.*}."
975 __gitcomp
"$(__git_heads)" "$pfx" "$cur" "."
979 local pfx
="${cur%.*}."
982 url fetch push skipDefaultUpdate
983 receivepack uploadpack tagopt
988 local pfx
="${cur%.*}."
990 __gitcomp
"$(__git_remotes)" "$pfx" "$cur" "."
999 core.preferSymlinkRefs
1000 core.logAllRefUpdates
1001 core.loosecompression
1002 core.repositoryFormatVersion
1003 core.sharedRepository
1004 core.warnAmbiguousRefs
1006 core.packedGitWindowSize
1010 color.branch.current
1021 color.diff.whitespace
1026 color.status.changed
1027 color.status.untracked
1032 format.subjectprefix
1036 gitcvs.dbname gitcvs.dbdriver gitcvs.dbuser gitcvs.dbpass
1037 gitcvs.dbtablenameprefix
1040 gc.reflogexpireunreachable
1053 i18n.logOutputEncoding
1063 pack.deltaCacheLimit
1066 repack.useDeltaBaseOffset
1070 transfer.unpackLimit
1072 receive.denyNonFastForwards
1076 whatchanged.difftree
1083 local subcommands
="add rm show prune update"
1084 local subcommand
="$(__git_find_subcommand "$subcommands")"
1085 if [ -z "$subcommand" ]; then
1086 __gitcomp
"$subcommands"
1090 case "$subcommand" in
1092 __gitcomp
"$(__git_remotes)"
1095 local i c
='' IFS
=$
'\n'
1096 for i
in $
(git
--git-dir="$(__gitdir)" config
--list); do
1114 __git_has_doubledash
&& return
1116 local cur
="${COMP_WORDS[COMP_CWORD]}"
1119 __gitcomp
"--mixed --hard --soft"
1123 __gitcomp
"$(__git_refs)"
1128 __git_has_doubledash
&& return
1130 local cur
="${COMP_WORDS[COMP_CWORD]}"
1134 --max-count= --max-age= --since= --after=
1135 --min-age= --before= --until=
1137 --author= --committer= --grep=
1140 --numbered --summary
1145 __git_complete_revlist
1150 local cur
="${COMP_WORDS[COMP_CWORD]}"
1154 oneline short medium full fuller email raw
1155 " "" "${cur##--pretty=}"
1159 __gitcomp
"--pretty="
1168 local subcommands
='save list show apply clear drop pop create'
1169 if [ -z "$(__git_find_subcommand "$subcommands")" ]; then
1170 __gitcomp
"$subcommands"
1176 __git_has_doubledash
&& return
1178 local subcommands
="add status init update"
1179 if [ -z "$(__git_find_subcommand "$subcommands")" ]; then
1180 local cur
="${COMP_WORDS[COMP_CWORD]}"
1183 __gitcomp
"--quiet --cached"
1186 __gitcomp
"$subcommands"
1196 init fetch clone rebase dcommit log find-rev
1197 set-tree commit-diff info create-ignore propget
1198 proplist show-ignore show-externals
1200 local subcommand
="$(__git_find_subcommand "$subcommands")"
1201 if [ -z "$subcommand" ]; then
1202 __gitcomp
"$subcommands"
1204 local remote_opts
="--username= --config-dir= --no-auth-cache"
1206 --follow-parent --authors-file= --repack=
1207 --no-metadata --use-svm-props --use-svnsync-props
1208 --log-window-size= --no-checkout --quiet
1209 --repack-flags --user-log-author $remote_opts
1212 --template= --shared= --trunk= --tags=
1213 --branches= --stdlayout --minimize-url
1214 --no-metadata --use-svm-props --use-svnsync-props
1215 --rewrite-root= $remote_opts
1218 --edit --rmdir --find-copies-harder --copy-similarity=
1221 local cur
="${COMP_WORDS[COMP_CWORD]}"
1222 case "$subcommand,$cur" in
1224 __gitcomp
"--revision= --fetch-all $fc_opts"
1227 __gitcomp
"--revision= $fc_opts $init_opts"
1230 __gitcomp
"$init_opts"
1234 --merge --strategy= --verbose --dry-run
1235 --fetch-all --no-rebase $cmt_opts $fc_opts
1239 __gitcomp
"--stdin $cmt_opts $fc_opts"
1241 create-ignore
,--*|propget
,--*|proplist
,--*|show-ignore
,--*|\
1243 __gitcomp
"--revision="
1247 --limit= --revision= --verbose --incremental
1248 --oneline --show-commit --non-recursive
1254 --merge --verbose --strategy= --local
1255 --fetch-all $fc_opts
1259 __gitcomp
"--message= --file= --revision= $cmt_opts"
1274 while [ $c -lt $COMP_CWORD ]; do
1275 i
="${COMP_WORDS[c]}"
1278 __gitcomp
"$(__git_tags)"
1288 case "${COMP_WORDS[COMP_CWORD-1]}" in
1294 __gitcomp
"$(__git_tags)"
1300 __gitcomp
"$(__git_refs)"
1307 local i c
=1 command __git_dir
1309 while [ $c -lt $COMP_CWORD ]; do
1310 i
="${COMP_WORDS[c]}"
1312 --git-dir=*) __git_dir
="${i#--git-dir=}" ;;
1313 --bare) __git_dir
="." ;;
1314 --version|
--help|
-p|
--paginate) ;;
1315 *) command="$i"; break ;;
1320 if [ -z "$command" ]; then
1321 case "${COMP_WORDS[COMP_CWORD]}" in
1322 --*=*) COMPREPLY
=() ;;
1334 *) __gitcomp
"$(__git_commands) $(__git_aliases)" ;;
1339 local expansion
=$
(__git_aliased_command
"$command")
1340 [ "$expansion" ] && command="$expansion"
1345 apply
) _git_apply
;;
1346 bisect
) _git_bisect
;;
1347 bundle
) _git_bundle
;;
1348 branch
) _git_branch
;;
1349 checkout
) _git_checkout
;;
1350 cherry
) _git_cherry
;;
1351 cherry-pick
) _git_cherry_pick
;;
1352 commit
) _git_commit
;;
1353 config
) _git_config
;;
1354 describe
) _git_describe
;;
1356 fetch
) _git_fetch
;;
1357 format-patch
) _git_format_patch
;;
1360 ls-remote
) _git_ls_remote
;;
1361 ls-tree
) _git_ls_tree
;;
1363 merge-base
) _git_merge_base
;;
1364 name-rev
) _git_name_rev
;;
1367 rebase
) _git_rebase
;;
1368 remote
) _git_remote
;;
1369 reset) _git_reset
;;
1370 shortlog
) _git_shortlog
;;
1372 show-branch
) _git_log
;;
1373 stash
) _git_stash
;;
1374 submodule
) _git_submodule
;;
1377 whatchanged
) _git_log
;;
1384 __git_has_doubledash
&& return
1386 local cur
="${COMP_WORDS[COMP_CWORD]}"
1387 local g
="$(git rev-parse --git-dir 2>/dev/null)"
1389 if [ -f $g/MERGE_HEAD
]; then
1394 __gitcomp
"--not --all $merge"
1398 __git_complete_revlist
1401 complete
-o default
-o nospace
-F _git git
1402 complete
-o default
-o nospace
-F _gitk gitk
1403 complete
-o default
-o nospace
-F _git_am git-am
1404 complete
-o default
-o nospace
-F _git_apply git-apply
1405 complete
-o default
-o nospace
-F _git_bisect git-bisect
1406 complete
-o default
-o nospace
-F _git_branch git-branch
1407 complete
-o default
-o nospace
-F _git_bundle git-bundle
1408 complete
-o default
-o nospace
-F _git_checkout git-checkout
1409 complete
-o default
-o nospace
-F _git_cherry git-cherry
1410 complete
-o default
-o nospace
-F _git_cherry_pick git-cherry-pick
1411 complete
-o default
-o nospace
-F _git_commit git-commit
1412 complete
-o default
-o nospace
-F _git_describe git-describe
1413 complete
-o default
-o nospace
-F _git_diff git-diff
1414 complete
-o default
-o nospace
-F _git_fetch git-fetch
1415 complete
-o default
-o nospace
-F _git_format_patch git-format-patch
1416 complete
-o default
-o nospace
-F _git_gc git-gc
1417 complete
-o default
-o nospace
-F _git_log git-log
1418 complete
-o default
-o nospace
-F _git_ls_remote git-ls-remote
1419 complete
-o default
-o nospace
-F _git_ls_tree git-ls-tree
1420 complete
-o default
-o nospace
-F _git_merge git-merge
1421 complete
-o default
-o nospace
-F _git_merge_base git-merge-base
1422 complete
-o default
-o nospace
-F _git_name_rev git-name-rev
1423 complete
-o default
-o nospace
-F _git_pull git-pull
1424 complete
-o default
-o nospace
-F _git_push git-push
1425 complete
-o default
-o nospace
-F _git_rebase git-rebase
1426 complete
-o default
-o nospace
-F _git_config git-config
1427 complete
-o default
-o nospace
-F _git_remote git-remote
1428 complete
-o default
-o nospace
-F _git_reset git-reset
1429 complete
-o default
-o nospace
-F _git_shortlog git-shortlog
1430 complete
-o default
-o nospace
-F _git_show git-show
1431 complete
-o default
-o nospace
-F _git_stash git-stash
1432 complete
-o default
-o nospace
-F _git_submodule git-submodule
1433 complete
-o default
-o nospace
-F _git_svn git-svn
1434 complete
-o default
-o nospace
-F _git_log git-show-branch
1435 complete
-o default
-o nospace
-F _git_tag git-tag
1436 complete
-o default
-o nospace
-F _git_log git-whatchanged
1438 # The following are necessary only for Cygwin, and only are needed
1439 # when the user has tab-completed the executable name and consequently
1440 # included the '.exe' suffix.
1442 if [ Cygwin
= "$(uname -o 2>/dev/null)" ]; then
1443 complete
-o default
-o nospace
-F _git_add git-add.exe
1444 complete
-o default
-o nospace
-F _git_apply git-apply.exe
1445 complete
-o default
-o nospace
-F _git git.exe
1446 complete
-o default
-o nospace
-F _git_branch git-branch.exe
1447 complete
-o default
-o nospace
-F _git_bundle git-bundle.exe
1448 complete
-o default
-o nospace
-F _git_cherry git-cherry.exe
1449 complete
-o default
-o nospace
-F _git_describe git-describe.exe
1450 complete
-o default
-o nospace
-F _git_diff git-diff.exe
1451 complete
-o default
-o nospace
-F _git_format_patch git-format-patch.exe
1452 complete
-o default
-o nospace
-F _git_log git-log.exe
1453 complete
-o default
-o nospace
-F _git_ls_tree git-ls-tree.exe
1454 complete
-o default
-o nospace
-F _git_merge_base git-merge-base.exe
1455 complete
-o default
-o nospace
-F _git_name_rev git-name-rev.exe
1456 complete
-o default
-o nospace
-F _git_push git-push.exe
1457 complete
-o default
-o nospace
-F _git_config git-config
1458 complete
-o default
-o nospace
-F _git_shortlog git-shortlog.exe
1459 complete
-o default
-o nospace
-F _git_show git-show.exe
1460 complete
-o default
-o nospace
-F _git_log git-show-branch.exe
1461 complete
-o default
-o nospace
-F _git_tag git-tag.exe
1462 complete
-o default
-o nospace
-F _git_log git-whatchanged.exe