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"
328 __gitcomp
"$(__git_refs)"
335 if [ -n "$__git_commandlist" ]; then
336 echo "$__git_commandlist"
340 for i
in $
(git
help -a|
egrep '^ ')
343 *--*) : helper pattern
;;
344 applymbox
) : ask gittus
;;
345 applypatch
) : ask gittus
;;
346 archimport
) : import
;;
347 cat-file
) : plumbing
;;
348 check-attr
) : plumbing
;;
349 check-ref-format
) : plumbing
;;
350 commit-tree
) : plumbing
;;
351 cvsexportcommit
) : export;;
352 cvsimport
) : import
;;
353 cvsserver
) : daemon
;;
355 diff-files
) : plumbing
;;
356 diff-index
) : plumbing
;;
357 diff-tree
) : plumbing
;;
358 fast-import
) : import
;;
359 fsck-objects
) : plumbing
;;
360 fetch-pack
) : plumbing
;;
361 fmt-merge-msg
) : plumbing
;;
362 for-each-ref
) : plumbing
;;
363 hash-object
) : plumbing
;;
364 http-
*) : transport
;;
365 index-pack
) : plumbing
;;
366 init-db
) : deprecated
;;
367 local-fetch
) : plumbing
;;
368 mailinfo
) : plumbing
;;
369 mailsplit
) : plumbing
;;
370 merge-
*) : plumbing
;;
373 pack-objects
) : plumbing
;;
374 pack-redundant
) : plumbing
;;
375 pack-refs
) : plumbing
;;
376 parse-remote
) : plumbing
;;
377 patch-id
) : plumbing
;;
378 peek-remote
) : plumbing
;;
380 prune-packed
) : plumbing
;;
381 quiltimport
) : import
;;
382 read-tree
) : plumbing
;;
383 receive-pack
) : plumbing
;;
385 repo-config
) : deprecated
;;
387 rev-list
) : plumbing
;;
388 rev-parse
) : plumbing
;;
389 runstatus
) : plumbing
;;
390 sh-setup
) : internal
;;
392 send-pack
) : plumbing
;;
393 show-index
) : plumbing
;;
395 stripspace
) : plumbing
;;
396 symbolic-ref
) : plumbing
;;
397 tar-tree
) : deprecated
;;
398 unpack-file
) : plumbing
;;
399 unpack-objects
) : plumbing
;;
400 update-index
) : plumbing
;;
401 update-ref
) : plumbing
;;
402 update-server-info
) : daemon
;;
403 upload-archive
) : plumbing
;;
404 upload-pack
) : plumbing
;;
405 write-tree
) : plumbing
;;
406 verify-tag
) : plumbing
;;
412 __git_commandlist
="$(__git_commands 2>/dev/null)"
417 for i
in $
(git
--git-dir="$(__gitdir)" config
--list); do
427 __git_aliased_command
()
429 local word cmdline
=$
(git
--git-dir="$(__gitdir)" \
430 config
--get "alias.$1")
431 for word
in $cmdline; do
432 if [ "${word##-*}" ]; then
439 __git_find_subcommand
()
441 local word subcommand c
=1
443 while [ $c -lt $COMP_CWORD ]; do
444 word
="${COMP_WORDS[c]}"
445 for subcommand
in $1; do
446 if [ "$subcommand" = "$word" ]; then
455 __git_has_doubledash
()
458 while [ $c -lt $COMP_CWORD ]; do
459 if [ "--" = "${COMP_WORDS[c]}" ]; then
467 __git_whitespacelist
="nowarn warn error error-all strip"
471 local cur
="${COMP_WORDS[COMP_CWORD]}"
472 if [ -d .dotest
]; then
473 __gitcomp
"--skip --resolved"
478 __gitcomp
"$__git_whitespacelist" "" "${cur##--whitespace=}"
483 --signoff --utf8 --binary --3way --interactive
493 local cur
="${COMP_WORDS[COMP_CWORD]}"
496 __gitcomp
"$__git_whitespacelist" "" "${cur##--whitespace=}"
501 --stat --numstat --summary --check --index
502 --cached --index-info --reverse --reject --unidiff-zero
503 --apply --no-add --exclude=
504 --whitespace= --inaccurate-eof --verbose
513 __git_has_doubledash
&& return
515 local cur
="${COMP_WORDS[COMP_CWORD]}"
519 --interactive --refresh --patch --update --dry-run
529 __git_has_doubledash
&& return
531 local subcommands
="start bad good reset visualize replay log"
532 local subcommand
="$(__git_find_subcommand "$subcommands")"
533 if [ -z "$subcommand" ]; then
534 __gitcomp
"$subcommands"
538 case "$subcommand" in
540 __gitcomp
"$(__git_refs)"
550 local i c
=1 only_local_ref
="n" has_r
="n"
552 while [ $c -lt $COMP_CWORD ]; do
555 -d|
-m) only_local_ref
="y" ;;
561 case "${COMP_WORDS[COMP_CWORD]}" in
562 --*=*) COMPREPLY
=() ;;
565 --color --no-color --verbose --abbrev= --no-abbrev
570 if [ $only_local_ref = "y" -a $has_r = "n" ]; then
571 __gitcomp
"$(__git_heads)"
573 __gitcomp
"$(__git_refs)"
581 local mycword
="$COMP_CWORD"
582 case "${COMP_WORDS[0]}" in
584 local cmd
="${COMP_WORDS[2]}"
585 mycword
="$((mycword-1))"
588 local cmd
="${COMP_WORDS[1]}"
593 __gitcomp
"create list-heads verify unbundle"
601 __git_complete_revlist
610 __gitcomp
"$(__git_refs)"
615 __gitcomp
"$(__git_refs)"
620 local cur
="${COMP_WORDS[COMP_CWORD]}"
623 __gitcomp
"--edit --no-commit"
626 __gitcomp
"$(__git_refs)"
633 __git_has_doubledash
&& return
635 local cur
="${COMP_WORDS[COMP_CWORD]}"
639 --all --author= --signoff --verify --no-verify
640 --edit --amend --include --only
649 __gitcomp
"$(__git_refs)"
654 __git_has_doubledash
&& return
656 local cur
="${COMP_WORDS[COMP_CWORD]}"
659 __gitcomp
"--cached --stat --numstat --shortstat --summary
660 --patch-with-stat --name-only --name-status --color
661 --no-color --color-words --no-renames --check
662 --full-index --binary --abbrev --diff-filter
663 --find-copies-harder --pickaxe-all --pickaxe-regex
664 --text --ignore-space-at-eol --ignore-space-change
665 --ignore-all-space --exit-code --quiet --ext-diff
667 --no-prefix --src-prefix= --dst-prefix=
668 --base --ours --theirs
678 __gitcomp
"$(__git_refs)"
683 local cur
="${COMP_WORDS[COMP_CWORD]}"
685 case "${COMP_WORDS[0]},$COMP_CWORD" in
687 __gitcomp
"$(__git_remotes)"
690 __gitcomp
"$(__git_remotes)"
695 __gitcomp
"$(__git_refs)" "" "${cur#*:}"
699 case "${COMP_WORDS[0]}" in
700 git-fetch
) remote
="${COMP_WORDS[1]}" ;;
701 git
) remote
="${COMP_WORDS[2]}" ;;
703 __gitcomp
"$(__git_refs2 "$remote")"
712 local cur
="${COMP_WORDS[COMP_CWORD]}"
716 --stdout --attach --thread
718 --numbered --start-number
723 --full-index --binary
726 --no-prefix --src-prefix= --dst-prefix=
731 __git_complete_revlist
736 local cur
="${COMP_WORDS[COMP_CWORD]}"
739 __gitcomp
"--prune --aggressive"
748 __gitcomp
"$(__git_remotes)"
758 __git_has_doubledash
&& return
760 local cur
="${COMP_WORDS[COMP_CWORD]}"
764 oneline short medium full fuller email raw
765 " "" "${cur##--pretty=}"
770 relative iso8601 rfc2822 short local default
771 " "" "${cur##--date=}"
776 --max-count= --max-age= --since= --after=
777 --min-age= --before= --until=
778 --root --topo-order --date-order --reverse
780 --abbrev-commit --abbrev=
781 --relative-date --date=
782 --author= --committer= --grep=
784 --pretty= --name-status --name-only --raw
786 --left-right --cherry-pick
792 __git_complete_revlist
797 local cur
="${COMP_WORDS[COMP_CWORD]}"
798 case "${COMP_WORDS[COMP_CWORD-1]}" in
800 __gitcomp
"$(__git_merge_strategies)"
805 __gitcomp
"$(__git_merge_strategies)" "" "${cur##--strategy=}"
810 --no-commit --no-stat --log --no-log --squash --strategy
814 __gitcomp
"$(__git_refs)"
819 __gitcomp
"$(__git_refs)"
824 __gitcomp
"--tags --all --stdin"
829 local cur
="${COMP_WORDS[COMP_CWORD]}"
831 case "${COMP_WORDS[0]},$COMP_CWORD" in
833 __gitcomp
"$(__git_remotes)"
836 __gitcomp
"$(__git_remotes)"
840 case "${COMP_WORDS[0]}" in
841 git-pull
) remote
="${COMP_WORDS[1]}" ;;
842 git
) remote
="${COMP_WORDS[2]}" ;;
844 __gitcomp
"$(__git_refs "$remote")"
851 local cur
="${COMP_WORDS[COMP_CWORD]}"
853 case "${COMP_WORDS[0]},$COMP_CWORD" in
855 __gitcomp
"$(__git_remotes)"
858 __gitcomp
"$(__git_remotes)"
864 case "${COMP_WORDS[0]}" in
865 git-push
) remote
="${COMP_WORDS[1]}" ;;
866 git
) remote
="${COMP_WORDS[2]}" ;;
868 __gitcomp
"$(__git_refs "$remote")" "" "${cur#*:}"
871 __gitcomp
"$(__git_refs)" + "${cur#+}"
874 __gitcomp
"$(__git_refs)"
883 local cur
="${COMP_WORDS[COMP_CWORD]}" dir
="$(__gitdir)"
884 if [ -d .dotest
] ||
[ -d "$dir"/.dotest-merge
]; then
885 __gitcomp
"--continue --skip --abort"
888 case "${COMP_WORDS[COMP_CWORD-1]}" in
890 __gitcomp
"$(__git_merge_strategies)"
895 __gitcomp
"$(__git_merge_strategies)" "" "${cur##--strategy=}"
899 __gitcomp
"--onto --merge --strategy --interactive"
902 __gitcomp
"$(__git_refs)"
907 local cur
="${COMP_WORDS[COMP_CWORD]}"
908 local prv
="${COMP_WORDS[COMP_CWORD-1]}"
911 __gitcomp
"$(__git_remotes)"
915 __gitcomp
"$(__git_refs)"
919 local remote
="${prv#remote.}"
920 remote
="${remote%.fetch}"
921 __gitcomp
"$(__git_refs_remotes "$remote")"
925 local remote
="${prv#remote.}"
926 remote
="${remote%.push}"
927 __gitcomp
"$(git --git-dir="$
(__gitdir
)" \
928 for-each-ref --format='%(refname):%(refname)' \
932 pull.twohead|pull.octopus
)
933 __gitcomp
"$(__git_merge_strategies)"
936 color.branch|color.
diff|color.status
)
937 __gitcomp
"always never auto"
942 black red green yellow blue magenta cyan white
943 bold dim ul blink reverse
955 --global --system --file=
957 --get --get-all --get-regexp
958 --add --unset --unset-all
959 --remove-section --rename-section
964 local pfx
="${cur%.*}."
966 __gitcomp
"remote merge" "$pfx" "$cur"
970 local pfx
="${cur%.*}."
972 __gitcomp
"$(__git_heads)" "$pfx" "$cur" "."
976 local pfx
="${cur%.*}."
979 url fetch push skipDefaultUpdate
980 receivepack uploadpack tagopt
985 local pfx
="${cur%.*}."
987 __gitcomp
"$(__git_remotes)" "$pfx" "$cur" "."
996 core.preferSymlinkRefs
997 core.logAllRefUpdates
998 core.loosecompression
999 core.repositoryFormatVersion
1000 core.sharedRepository
1001 core.warnAmbiguousRefs
1003 core.packedGitWindowSize
1007 color.branch.current
1018 color.diff.whitespace
1023 color.status.changed
1024 color.status.untracked
1029 format.subjectprefix
1033 gitcvs.dbname gitcvs.dbdriver gitcvs.dbuser gitcvs.dbpass
1034 gitcvs.dbtablenameprefix
1037 gc.reflogexpireunreachable
1050 i18n.logOutputEncoding
1060 pack.deltaCacheLimit
1063 repack.useDeltaBaseOffset
1067 transfer.unpackLimit
1069 receive.denyNonFastForwards
1073 whatchanged.difftree
1080 local subcommands
="add rm show prune update"
1081 local subcommand
="$(__git_find_subcommand "$subcommands")"
1082 if [ -z "$subcommand" ]; then
1083 __gitcomp
"$subcommands"
1087 case "$subcommand" in
1089 __gitcomp
"$(__git_remotes)"
1092 local i c
='' IFS
=$
'\n'
1093 for i
in $
(git
--git-dir="$(__gitdir)" config
--list); do
1111 __git_has_doubledash
&& return
1113 local cur
="${COMP_WORDS[COMP_CWORD]}"
1116 __gitcomp
"--mixed --hard --soft"
1120 __gitcomp
"$(__git_refs)"
1125 __git_has_doubledash
&& return
1127 local cur
="${COMP_WORDS[COMP_CWORD]}"
1131 --max-count= --max-age= --since= --after=
1132 --min-age= --before= --until=
1134 --author= --committer= --grep=
1137 --numbered --summary
1142 __git_complete_revlist
1147 local cur
="${COMP_WORDS[COMP_CWORD]}"
1151 oneline short medium full fuller email raw
1152 " "" "${cur##--pretty=}"
1156 __gitcomp
"--pretty="
1165 local subcommands
='save list show apply clear drop pop create'
1166 if [ -z "$(__git_find_subcommand "$subcommands")" ]; then
1167 __gitcomp
"$subcommands"
1173 __git_has_doubledash
&& return
1175 local subcommands
="add status init update"
1176 if [ -z "$(__git_find_subcommand "$subcommands")" ]; then
1177 local cur
="${COMP_WORDS[COMP_CWORD]}"
1180 __gitcomp
"--quiet --cached"
1183 __gitcomp
"$subcommands"
1193 init fetch clone rebase dcommit log find-rev
1194 set-tree commit-diff info create-ignore propget
1195 proplist show-ignore show-externals
1197 local subcommand
="$(__git_find_subcommand "$subcommands")"
1198 if [ -z "$subcommand" ]; then
1199 __gitcomp
"$subcommands"
1201 local remote_opts
="--username= --config-dir= --no-auth-cache"
1203 --follow-parent --authors-file= --repack=
1204 --no-metadata --use-svm-props --use-svnsync-props
1205 --log-window-size= --no-checkout --quiet
1206 --repack-flags --user-log-author $remote_opts
1209 --template= --shared= --trunk= --tags=
1210 --branches= --stdlayout --minimize-url
1211 --no-metadata --use-svm-props --use-svnsync-props
1212 --rewrite-root= $remote_opts
1215 --edit --rmdir --find-copies-harder --copy-similarity=
1218 local cur
="${COMP_WORDS[COMP_CWORD]}"
1219 case "$subcommand,$cur" in
1221 __gitcomp
"--revision= --fetch-all $fc_opts"
1224 __gitcomp
"--revision= $fc_opts $init_opts"
1227 __gitcomp
"$init_opts"
1231 --merge --strategy= --verbose --dry-run
1232 --fetch-all --no-rebase $cmt_opts $fc_opts
1236 __gitcomp
"--stdin $cmt_opts $fc_opts"
1238 create-ignore
,--*|propget
,--*|proplist
,--*|show-ignore
,--*|\
1240 __gitcomp
"--revision="
1244 --limit= --revision= --verbose --incremental
1245 --oneline --show-commit --non-recursive
1251 --merge --verbose --strategy= --local
1252 --fetch-all $fc_opts
1256 __gitcomp
"--message= --file= --revision= $cmt_opts"
1271 while [ $c -lt $COMP_CWORD ]; do
1272 i
="${COMP_WORDS[c]}"
1275 __gitcomp
"$(__git_tags)"
1285 case "${COMP_WORDS[COMP_CWORD-1]}" in
1291 __gitcomp
"$(__git_tags)"
1297 __gitcomp
"$(__git_refs)"
1304 local i c
=1 command __git_dir
1306 while [ $c -lt $COMP_CWORD ]; do
1307 i
="${COMP_WORDS[c]}"
1309 --git-dir=*) __git_dir
="${i#--git-dir=}" ;;
1310 --bare) __git_dir
="." ;;
1311 --version|
--help|
-p|
--paginate) ;;
1312 *) command="$i"; break ;;
1317 if [ -z "$command" ]; then
1318 case "${COMP_WORDS[COMP_CWORD]}" in
1319 --*=*) COMPREPLY
=() ;;
1331 *) __gitcomp
"$(__git_commands) $(__git_aliases)" ;;
1336 local expansion
=$
(__git_aliased_command
"$command")
1337 [ "$expansion" ] && command="$expansion"
1342 apply
) _git_apply
;;
1343 bisect
) _git_bisect
;;
1344 bundle
) _git_bundle
;;
1345 branch
) _git_branch
;;
1346 checkout
) _git_checkout
;;
1347 cherry
) _git_cherry
;;
1348 cherry-pick
) _git_cherry_pick
;;
1349 commit
) _git_commit
;;
1350 config
) _git_config
;;
1351 describe
) _git_describe
;;
1353 fetch
) _git_fetch
;;
1354 format-patch
) _git_format_patch
;;
1357 ls-remote
) _git_ls_remote
;;
1358 ls-tree
) _git_ls_tree
;;
1360 merge-base
) _git_merge_base
;;
1361 name-rev
) _git_name_rev
;;
1364 rebase
) _git_rebase
;;
1365 remote
) _git_remote
;;
1366 reset) _git_reset
;;
1367 shortlog
) _git_shortlog
;;
1369 show-branch
) _git_log
;;
1370 stash
) _git_stash
;;
1371 submodule
) _git_submodule
;;
1374 whatchanged
) _git_log
;;
1381 __git_has_doubledash
&& return
1383 local cur
="${COMP_WORDS[COMP_CWORD]}"
1384 local g
="$(git rev-parse --git-dir 2>/dev/null)"
1386 if [ -f $g/MERGE_HEAD
]; then
1391 __gitcomp
"--not --all $merge"
1395 __git_complete_revlist
1398 complete
-o default
-o nospace
-F _git git
1399 complete
-o default
-o nospace
-F _gitk gitk
1400 complete
-o default
-o nospace
-F _git_am git-am
1401 complete
-o default
-o nospace
-F _git_apply git-apply
1402 complete
-o default
-o nospace
-F _git_bisect git-bisect
1403 complete
-o default
-o nospace
-F _git_branch git-branch
1404 complete
-o default
-o nospace
-F _git_bundle git-bundle
1405 complete
-o default
-o nospace
-F _git_checkout git-checkout
1406 complete
-o default
-o nospace
-F _git_cherry git-cherry
1407 complete
-o default
-o nospace
-F _git_cherry_pick git-cherry-pick
1408 complete
-o default
-o nospace
-F _git_commit git-commit
1409 complete
-o default
-o nospace
-F _git_describe git-describe
1410 complete
-o default
-o nospace
-F _git_diff git-diff
1411 complete
-o default
-o nospace
-F _git_fetch git-fetch
1412 complete
-o default
-o nospace
-F _git_format_patch git-format-patch
1413 complete
-o default
-o nospace
-F _git_gc git-gc
1414 complete
-o default
-o nospace
-F _git_log git-log
1415 complete
-o default
-o nospace
-F _git_ls_remote git-ls-remote
1416 complete
-o default
-o nospace
-F _git_ls_tree git-ls-tree
1417 complete
-o default
-o nospace
-F _git_merge git-merge
1418 complete
-o default
-o nospace
-F _git_merge_base git-merge-base
1419 complete
-o default
-o nospace
-F _git_name_rev git-name-rev
1420 complete
-o default
-o nospace
-F _git_pull git-pull
1421 complete
-o default
-o nospace
-F _git_push git-push
1422 complete
-o default
-o nospace
-F _git_rebase git-rebase
1423 complete
-o default
-o nospace
-F _git_config git-config
1424 complete
-o default
-o nospace
-F _git_remote git-remote
1425 complete
-o default
-o nospace
-F _git_reset git-reset
1426 complete
-o default
-o nospace
-F _git_shortlog git-shortlog
1427 complete
-o default
-o nospace
-F _git_show git-show
1428 complete
-o default
-o nospace
-F _git_stash git-stash
1429 complete
-o default
-o nospace
-F _git_submodule git-submodule
1430 complete
-o default
-o nospace
-F _git_svn git-svn
1431 complete
-o default
-o nospace
-F _git_log git-show-branch
1432 complete
-o default
-o nospace
-F _git_tag git-tag
1433 complete
-o default
-o nospace
-F _git_log git-whatchanged
1435 # The following are necessary only for Cygwin, and only are needed
1436 # when the user has tab-completed the executable name and consequently
1437 # included the '.exe' suffix.
1439 if [ Cygwin
= "$(uname -o 2>/dev/null)" ]; then
1440 complete
-o default
-o nospace
-F _git_add git-add.exe
1441 complete
-o default
-o nospace
-F _git_apply git-apply.exe
1442 complete
-o default
-o nospace
-F _git git.exe
1443 complete
-o default
-o nospace
-F _git_branch git-branch.exe
1444 complete
-o default
-o nospace
-F _git_bundle git-bundle.exe
1445 complete
-o default
-o nospace
-F _git_cherry git-cherry.exe
1446 complete
-o default
-o nospace
-F _git_describe git-describe.exe
1447 complete
-o default
-o nospace
-F _git_diff git-diff.exe
1448 complete
-o default
-o nospace
-F _git_format_patch git-format-patch.exe
1449 complete
-o default
-o nospace
-F _git_log git-log.exe
1450 complete
-o default
-o nospace
-F _git_ls_tree git-ls-tree.exe
1451 complete
-o default
-o nospace
-F _git_merge_base git-merge-base.exe
1452 complete
-o default
-o nospace
-F _git_name_rev git-name-rev.exe
1453 complete
-o default
-o nospace
-F _git_push git-push.exe
1454 complete
-o default
-o nospace
-F _git_config git-config
1455 complete
-o default
-o nospace
-F _git_shortlog git-shortlog.exe
1456 complete
-o default
-o nospace
-F _git_show git-show.exe
1457 complete
-o default
-o nospace
-F _git_log git-show-branch.exe
1458 complete
-o default
-o nospace
-F _git_tag git-tag.exe
1459 complete
-o default
-o nospace
-F _git_log git-whatchanged.exe