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
132 --*=*) all
="$all$c$4$s" ;;
133 *.
) all
="$all$c$4$s" ;;
134 *) all
="$all$c$4 $s" ;;
140 COMPREPLY
=($
(compgen
-P "$2" -W "$all" -- "$cur"))
146 local cmd i is_hash
=y dir
="$(__gitdir "$1")"
147 if [ -d "$dir" ]; then
148 for i
in $
(git
--git-dir="$dir" \
149 for-each-ref
--format='%(refname)' \
151 echo "${i#refs/heads/}"
155 for i
in $
(git ls-remote
"$1" 2>/dev
/null
); do
156 case "$is_hash,$i" in
159 n
,refs
/heads
/*) is_hash
=y
; echo "${i#refs/heads/}" ;;
160 n
,*) is_hash
=y
; echo "$i" ;;
167 local cmd i is_hash
=y dir
="$(__gitdir "$1")"
168 if [ -d "$dir" ]; then
169 for i
in $
(git
--git-dir="$dir" \
170 for-each-ref
--format='%(refname)' \
172 echo "${i#refs/tags/}"
176 for i
in $
(git ls-remote
"$1" 2>/dev
/null
); do
177 case "$is_hash,$i" in
180 n
,refs
/tags
/*) is_hash
=y
; echo "${i#refs/tags/}" ;;
181 n
,*) is_hash
=y
; echo "$i" ;;
188 local cmd i is_hash
=y dir
="$(__gitdir "$1")"
189 if [ -d "$dir" ]; then
190 if [ -e "$dir/HEAD" ]; then echo HEAD
; fi
191 for i
in $
(git
--git-dir="$dir" \
192 for-each-ref
--format='%(refname)' \
193 refs
/tags refs
/heads refs
/remotes
); do
195 refs
/tags
/*) echo "${i#refs/tags/}" ;;
196 refs
/heads
/*) echo "${i#refs/heads/}" ;;
197 refs
/remotes
/*) echo "${i#refs/remotes/}" ;;
203 for i
in $
(git ls-remote
"$dir" 2>/dev
/null
); do
204 case "$is_hash,$i" in
207 n
,refs
/tags
/*) is_hash
=y
; echo "${i#refs/tags/}" ;;
208 n
,refs
/heads
/*) is_hash
=y
; echo "${i#refs/heads/}" ;;
209 n
,refs
/remotes
/*) is_hash
=y
; echo "${i#refs/remotes/}" ;;
210 n
,*) is_hash
=y
; echo "$i" ;;
218 for i
in $
(__git_refs
"$1"); do
223 __git_refs_remotes
()
225 local cmd i is_hash
=y
226 for i
in $
(git ls-remote
"$1" 2>/dev
/null
); do
227 case "$is_hash,$i" in
230 echo "$i:refs/remotes/$1/${i#refs/heads/}"
234 n
,refs
/tags
/*) is_hash
=y
;;
242 local i ngoff IFS
=$
'\n' d
="$(__gitdir)"
243 shopt -q nullglob || ngoff
=1
245 for i
in "$d/remotes"/*; do
246 echo ${i#$d/remotes/}
248 [ "$ngoff" ] && shopt -u nullglob
249 for i
in $
(git
--git-dir="$d" config
--list); do
259 __git_merge_strategies
()
261 if [ -n "$__git_merge_strategylist" ]; then
262 echo "$__git_merge_strategylist"
265 sed -n "/^all_strategies='/{
266 s/^all_strategies='//
270 }" "$(git --exec-path)/git-merge"
272 __git_merge_strategylist
=
273 __git_merge_strategylist
="$(__git_merge_strategies 2>/dev/null)"
275 __git_complete_file
()
277 local pfx
ls ref cur
="${COMP_WORDS[COMP_CWORD]}"
293 COMPREPLY
=($
(compgen
-P "$pfx" \
294 -W "$(git --git-dir="$
(__gitdir
)" ls-tree "$ls" \
295 | sed '/^100... blob /s,^.* ,,
304 __gitcomp
"$(__git_refs)"
309 __git_complete_revlist
()
311 local pfx cur
="${COMP_WORDS[COMP_CWORD]}"
316 __gitcomp
"$(__git_refs)" "$pfx" "$cur"
321 __gitcomp
"$(__git_refs)" "$pfx" "$cur"
327 __gitcomp
"$(__git_refs)"
334 if [ -n "$__git_commandlist" ]; then
335 echo "$__git_commandlist"
339 for i
in $
(git
help -a|
egrep '^ ')
342 *--*) : helper pattern
;;
343 applymbox
) : ask gittus
;;
344 applypatch
) : ask gittus
;;
345 archimport
) : import
;;
346 cat-file
) : plumbing
;;
347 check-attr
) : plumbing
;;
348 check-ref-format
) : plumbing
;;
349 commit-tree
) : plumbing
;;
350 cvsexportcommit
) : export;;
351 cvsimport
) : import
;;
352 cvsserver
) : daemon
;;
354 diff-files
) : plumbing
;;
355 diff-index
) : plumbing
;;
356 diff-tree
) : plumbing
;;
357 fast-import
) : import
;;
358 fsck-objects
) : plumbing
;;
359 fetch-pack
) : plumbing
;;
360 fmt-merge-msg
) : plumbing
;;
361 for-each-ref
) : plumbing
;;
362 hash-object
) : plumbing
;;
363 http-
*) : transport
;;
364 index-pack
) : plumbing
;;
365 init-db
) : deprecated
;;
366 local-fetch
) : plumbing
;;
367 mailinfo
) : plumbing
;;
368 mailsplit
) : plumbing
;;
369 merge-
*) : plumbing
;;
372 pack-objects
) : plumbing
;;
373 pack-redundant
) : plumbing
;;
374 pack-refs
) : plumbing
;;
375 parse-remote
) : plumbing
;;
376 patch-id
) : plumbing
;;
377 peek-remote
) : plumbing
;;
379 prune-packed
) : plumbing
;;
380 quiltimport
) : import
;;
381 read-tree
) : plumbing
;;
382 receive-pack
) : plumbing
;;
384 repo-config
) : deprecated
;;
386 rev-list
) : plumbing
;;
387 rev-parse
) : plumbing
;;
388 runstatus
) : plumbing
;;
389 sh-setup
) : internal
;;
391 send-pack
) : plumbing
;;
392 show-index
) : plumbing
;;
394 stripspace
) : plumbing
;;
395 symbolic-ref
) : plumbing
;;
396 tar-tree
) : deprecated
;;
397 unpack-file
) : plumbing
;;
398 unpack-objects
) : plumbing
;;
399 update-index
) : plumbing
;;
400 update-ref
) : plumbing
;;
401 update-server-info
) : daemon
;;
402 upload-archive
) : plumbing
;;
403 upload-pack
) : plumbing
;;
404 write-tree
) : plumbing
;;
405 verify-tag
) : plumbing
;;
411 __git_commandlist
="$(__git_commands 2>/dev/null)"
416 for i
in $
(git
--git-dir="$(__gitdir)" config
--list); do
426 __git_aliased_command
()
428 local word cmdline
=$
(git
--git-dir="$(__gitdir)" \
429 config
--get "alias.$1")
430 for word
in $cmdline; do
431 if [ "${word##-*}" ]; then
438 __git_find_subcommand
()
440 local word subcommand c
=1
442 while [ $c -lt $COMP_CWORD ]; do
443 word
="${COMP_WORDS[c]}"
444 for subcommand
in $1; do
445 if [ "$subcommand" = "$word" ]; then
454 __git_whitespacelist
="nowarn warn error error-all strip"
458 local cur
="${COMP_WORDS[COMP_CWORD]}"
459 if [ -d .dotest
]; then
460 __gitcomp
"--skip --resolved"
465 __gitcomp
"$__git_whitespacelist" "" "${cur##--whitespace=}"
470 --signoff --utf8 --binary --3way --interactive
480 local cur
="${COMP_WORDS[COMP_CWORD]}"
483 __gitcomp
"$__git_whitespacelist" "" "${cur##--whitespace=}"
488 --stat --numstat --summary --check --index
489 --cached --index-info --reverse --reject --unidiff-zero
490 --apply --no-add --exclude=
491 --whitespace= --inaccurate-eof --verbose
500 local cur
="${COMP_WORDS[COMP_CWORD]}"
504 --interactive --refresh --patch --update --dry-run
514 local subcommands
="start bad good reset visualize replay log"
515 local subcommand
="$(__git_find_subcommand "$subcommands")"
516 if [ -z "$subcommand" ]; then
517 __gitcomp
"$subcommands"
521 case "$subcommand" in
523 __gitcomp
"$(__git_refs)"
533 local i c
=1 only_local_ref
="n" has_r
="n"
535 while [ $c -lt $COMP_CWORD ]; do
538 -d|
-m) only_local_ref
="y" ;;
544 case "${COMP_WORDS[COMP_CWORD]}" in
545 --*=*) COMPREPLY
=() ;;
548 --color --no-color --verbose --abbrev= --no-abbrev
553 if [ $only_local_ref = "y" -a $has_r = "n" ]; then
554 __gitcomp
"$(__git_heads)"
556 __gitcomp
"$(__git_refs)"
564 local mycword
="$COMP_CWORD"
565 case "${COMP_WORDS[0]}" in
567 local cmd
="${COMP_WORDS[2]}"
568 mycword
="$((mycword-1))"
571 local cmd
="${COMP_WORDS[1]}"
576 __gitcomp
"create list-heads verify unbundle"
584 __git_complete_revlist
593 __gitcomp
"$(__git_refs)"
598 __gitcomp
"$(__git_refs)"
603 local cur
="${COMP_WORDS[COMP_CWORD]}"
606 __gitcomp
"--edit --no-commit"
609 __gitcomp
"$(__git_refs)"
616 local cur
="${COMP_WORDS[COMP_CWORD]}"
620 --all --author= --signoff --verify --no-verify
621 --edit --amend --include --only
630 __gitcomp
"$(__git_refs)"
635 local cur
="${COMP_WORDS[COMP_CWORD]}"
638 __gitcomp
"--cached --stat --numstat --shortstat --summary
639 --patch-with-stat --name-only --name-status --color
640 --no-color --color-words --no-renames --check
641 --full-index --binary --abbrev --diff-filter
642 --find-copies-harder --pickaxe-all --pickaxe-regex
643 --text --ignore-space-at-eol --ignore-space-change
644 --ignore-all-space --exit-code --quiet --ext-diff
646 --no-prefix --src-prefix= --dst-prefix=
647 --base --ours --theirs
657 __gitcomp
"$(__git_refs)"
662 local cur
="${COMP_WORDS[COMP_CWORD]}"
664 case "${COMP_WORDS[0]},$COMP_CWORD" in
666 __gitcomp
"$(__git_remotes)"
669 __gitcomp
"$(__git_remotes)"
674 __gitcomp
"$(__git_refs)" "" "${cur#*:}"
678 case "${COMP_WORDS[0]}" in
679 git-fetch
) remote
="${COMP_WORDS[1]}" ;;
680 git
) remote
="${COMP_WORDS[2]}" ;;
682 __gitcomp
"$(__git_refs2 "$remote")"
691 local cur
="${COMP_WORDS[COMP_CWORD]}"
695 --stdout --attach --thread
697 --numbered --start-number
702 --full-index --binary
705 --no-prefix --src-prefix= --dst-prefix=
710 __git_complete_revlist
715 local cur
="${COMP_WORDS[COMP_CWORD]}"
718 __gitcomp
"--prune --aggressive"
727 __gitcomp
"$(__git_remotes)"
737 local cur
="${COMP_WORDS[COMP_CWORD]}"
741 oneline short medium full fuller email raw
742 " "" "${cur##--pretty=}"
747 relative iso8601 rfc2822 short local default
748 " "" "${cur##--date=}"
753 --max-count= --max-age= --since= --after=
754 --min-age= --before= --until=
755 --root --topo-order --date-order --reverse
757 --abbrev-commit --abbrev=
758 --relative-date --date=
759 --author= --committer= --grep=
761 --pretty= --name-status --name-only --raw
763 --left-right --cherry-pick
768 __git_complete_revlist
773 local cur
="${COMP_WORDS[COMP_CWORD]}"
774 case "${COMP_WORDS[COMP_CWORD-1]}" in
776 __gitcomp
"$(__git_merge_strategies)"
781 __gitcomp
"$(__git_merge_strategies)" "" "${cur##--strategy=}"
786 --no-commit --no-stat --log --no-log --squash --strategy
790 __gitcomp
"$(__git_refs)"
795 __gitcomp
"$(__git_refs)"
800 __gitcomp
"--tags --all --stdin"
805 local cur
="${COMP_WORDS[COMP_CWORD]}"
807 case "${COMP_WORDS[0]},$COMP_CWORD" in
809 __gitcomp
"$(__git_remotes)"
812 __gitcomp
"$(__git_remotes)"
816 case "${COMP_WORDS[0]}" in
817 git-pull
) remote
="${COMP_WORDS[1]}" ;;
818 git
) remote
="${COMP_WORDS[2]}" ;;
820 __gitcomp
"$(__git_refs "$remote")"
827 local cur
="${COMP_WORDS[COMP_CWORD]}"
829 case "${COMP_WORDS[0]},$COMP_CWORD" in
831 __gitcomp
"$(__git_remotes)"
834 __gitcomp
"$(__git_remotes)"
840 case "${COMP_WORDS[0]}" in
841 git-push
) remote
="${COMP_WORDS[1]}" ;;
842 git
) remote
="${COMP_WORDS[2]}" ;;
844 __gitcomp
"$(__git_refs "$remote")" "" "${cur#*:}"
847 __gitcomp
"$(__git_refs)" + "${cur#+}"
850 __gitcomp
"$(__git_refs)"
859 local cur
="${COMP_WORDS[COMP_CWORD]}" dir
="$(__gitdir)"
860 if [ -d .dotest
] ||
[ -d "$dir"/.dotest-merge
]; then
861 __gitcomp
"--continue --skip --abort"
864 case "${COMP_WORDS[COMP_CWORD-1]}" in
866 __gitcomp
"$(__git_merge_strategies)"
871 __gitcomp
"$(__git_merge_strategies)" "" "${cur##--strategy=}"
875 __gitcomp
"--onto --merge --strategy --interactive"
878 __gitcomp
"$(__git_refs)"
883 local cur
="${COMP_WORDS[COMP_CWORD]}"
884 local prv
="${COMP_WORDS[COMP_CWORD-1]}"
887 __gitcomp
"$(__git_remotes)"
891 __gitcomp
"$(__git_refs)"
895 local remote
="${prv#remote.}"
896 remote
="${remote%.fetch}"
897 __gitcomp
"$(__git_refs_remotes "$remote")"
901 local remote
="${prv#remote.}"
902 remote
="${remote%.push}"
903 __gitcomp
"$(git --git-dir="$
(__gitdir
)" \
904 for-each-ref --format='%(refname):%(refname)' \
908 pull.twohead|pull.octopus
)
909 __gitcomp
"$(__git_merge_strategies)"
912 color.branch|color.
diff|color.status
)
913 __gitcomp
"always never auto"
918 black red green yellow blue magenta cyan white
919 bold dim ul blink reverse
931 --global --system --file=
933 --get --get-all --get-regexp
934 --add --unset --unset-all
935 --remove-section --rename-section
940 local pfx
="${cur%.*}."
942 __gitcomp
"remote merge" "$pfx" "$cur"
946 local pfx
="${cur%.*}."
948 __gitcomp
"$(__git_heads)" "$pfx" "$cur" "."
952 local pfx
="${cur%.*}."
955 url fetch push skipDefaultUpdate
956 receivepack uploadpack tagopt
961 local pfx
="${cur%.*}."
963 __gitcomp
"$(__git_remotes)" "$pfx" "$cur" "."
972 core.preferSymlinkRefs
973 core.logAllRefUpdates
974 core.loosecompression
975 core.repositoryFormatVersion
976 core.sharedRepository
977 core.warnAmbiguousRefs
979 core.packedGitWindowSize
994 color.diff.whitespace
1000 color.status.untracked
1005 format.subjectprefix
1009 gitcvs.dbname gitcvs.dbdriver gitcvs.dbuser gitcvs.dbpass
1010 gitcvs.dbtablenameprefix
1013 gc.reflogexpireunreachable
1026 i18n.logOutputEncoding
1036 pack.deltaCacheLimit
1039 repack.useDeltaBaseOffset
1043 transfer.unpackLimit
1045 receive.denyNonFastForwards
1049 whatchanged.difftree
1056 local subcommands
="add rm show prune update"
1057 local subcommand
="$(__git_find_subcommand "$subcommands")"
1058 if [ -z "$subcommand" ]; then
1059 __gitcomp
"$subcommands"
1063 case "$subcommand" in
1065 __gitcomp
"$(__git_remotes)"
1068 local i c
='' IFS
=$
'\n'
1069 for i
in $
(git
--git-dir="$(__gitdir)" config
--list); do
1087 local cur
="${COMP_WORDS[COMP_CWORD]}"
1090 __gitcomp
"--mixed --hard --soft"
1094 __gitcomp
"$(__git_refs)"
1099 local cur
="${COMP_WORDS[COMP_CWORD]}"
1103 --max-count= --max-age= --since= --after=
1104 --min-age= --before= --until=
1106 --author= --committer= --grep=
1109 --numbered --summary
1114 __git_complete_revlist
1119 local cur
="${COMP_WORDS[COMP_CWORD]}"
1123 oneline short medium full fuller email raw
1124 " "" "${cur##--pretty=}"
1128 __gitcomp
"--pretty="
1137 local subcommands
='save list show apply clear drop pop create'
1138 if [ -z "$(__git_find_subcommand "$subcommands")" ]; then
1139 __gitcomp
"$subcommands"
1145 local subcommands
="add status init update"
1146 if [ -z "$(__git_find_subcommand "$subcommands")" ]; then
1147 local cur
="${COMP_WORDS[COMP_CWORD]}"
1150 __gitcomp
"--quiet --cached"
1153 __gitcomp
"$subcommands"
1163 init fetch clone rebase dcommit log find-rev
1164 set-tree commit-diff info create-ignore propget
1165 proplist show-ignore show-externals
1167 local subcommand
="$(__git_find_subcommand "$subcommands")"
1168 if [ -z "$subcommand" ]; then
1169 __gitcomp
"$subcommands"
1171 local remote_opts
="--username= --config-dir= --no-auth-cache"
1173 --follow-parent --authors-file= --repack=
1174 --no-metadata --use-svm-props --use-svnsync-props
1175 --log-window-size= --no-checkout --quiet
1176 --repack-flags --user-log-author $remote_opts
1179 --template= --shared= --trunk= --tags=
1180 --branches= --stdlayout --minimize-url
1181 --no-metadata --use-svm-props --use-svnsync-props
1182 --rewrite-root= $remote_opts
1185 --edit --rmdir --find-copies-harder --copy-similarity=
1188 local cur
="${COMP_WORDS[COMP_CWORD]}"
1189 case "$subcommand,$cur" in
1191 __gitcomp
"--revision= --fetch-all $fc_opts"
1194 __gitcomp
"--revision= $fc_opts $init_opts"
1197 __gitcomp
"$init_opts"
1201 --merge --strategy= --verbose --dry-run
1202 --fetch-all --no-rebase $cmt_opts $fc_opts
1206 __gitcomp
"--stdin $cmt_opts $fc_opts"
1208 create-ignore
,--*|propget
,--*|proplist
,--*|show-ignore
,--*|\
1210 __gitcomp
"--revision="
1214 --limit= --revision= --verbose --incremental
1215 --oneline --show-commit --non-recursive
1221 --merge --verbose --strategy= --local
1222 --fetch-all $fc_opts
1226 __gitcomp
"--message= --file= --revision= $cmt_opts"
1241 while [ $c -lt $COMP_CWORD ]; do
1242 i
="${COMP_WORDS[c]}"
1245 __gitcomp
"$(__git_tags)"
1255 case "${COMP_WORDS[COMP_CWORD-1]}" in
1261 __gitcomp
"$(__git_tags)"
1267 __gitcomp
"$(__git_refs)"
1274 local i c
=1 command __git_dir
1276 while [ $c -lt $COMP_CWORD ]; do
1277 i
="${COMP_WORDS[c]}"
1279 --git-dir=*) __git_dir
="${i#--git-dir=}" ;;
1280 --bare) __git_dir
="." ;;
1281 --version|
--help|
-p|
--paginate) ;;
1282 *) command="$i"; break ;;
1287 if [ -z "$command" ]; then
1288 case "${COMP_WORDS[COMP_CWORD]}" in
1289 --*=*) COMPREPLY
=() ;;
1301 *) __gitcomp
"$(__git_commands) $(__git_aliases)" ;;
1306 local expansion
=$
(__git_aliased_command
"$command")
1307 [ "$expansion" ] && command="$expansion"
1312 apply
) _git_apply
;;
1313 bisect
) _git_bisect
;;
1314 bundle
) _git_bundle
;;
1315 branch
) _git_branch
;;
1316 checkout
) _git_checkout
;;
1317 cherry
) _git_cherry
;;
1318 cherry-pick
) _git_cherry_pick
;;
1319 commit
) _git_commit
;;
1320 config
) _git_config
;;
1321 describe
) _git_describe
;;
1323 fetch
) _git_fetch
;;
1324 format-patch
) _git_format_patch
;;
1327 ls-remote
) _git_ls_remote
;;
1328 ls-tree
) _git_ls_tree
;;
1330 merge-base
) _git_merge_base
;;
1331 name-rev
) _git_name_rev
;;
1334 rebase
) _git_rebase
;;
1335 remote
) _git_remote
;;
1336 reset) _git_reset
;;
1337 shortlog
) _git_shortlog
;;
1339 show-branch
) _git_log
;;
1340 stash
) _git_stash
;;
1341 submodule
) _git_submodule
;;
1344 whatchanged
) _git_log
;;
1351 local cur
="${COMP_WORDS[COMP_CWORD]}"
1352 local g
="$(git rev-parse --git-dir 2>/dev/null)"
1354 if [ -f $g/MERGE_HEAD
]; then
1359 __gitcomp
"--not --all $merge"
1363 __git_complete_revlist
1366 complete
-o default
-o nospace
-F _git git
1367 complete
-o default
-o nospace
-F _gitk gitk
1368 complete
-o default
-o nospace
-F _git_am git-am
1369 complete
-o default
-o nospace
-F _git_apply git-apply
1370 complete
-o default
-o nospace
-F _git_bisect git-bisect
1371 complete
-o default
-o nospace
-F _git_branch git-branch
1372 complete
-o default
-o nospace
-F _git_bundle git-bundle
1373 complete
-o default
-o nospace
-F _git_checkout git-checkout
1374 complete
-o default
-o nospace
-F _git_cherry git-cherry
1375 complete
-o default
-o nospace
-F _git_cherry_pick git-cherry-pick
1376 complete
-o default
-o nospace
-F _git_commit git-commit
1377 complete
-o default
-o nospace
-F _git_describe git-describe
1378 complete
-o default
-o nospace
-F _git_diff git-diff
1379 complete
-o default
-o nospace
-F _git_fetch git-fetch
1380 complete
-o default
-o nospace
-F _git_format_patch git-format-patch
1381 complete
-o default
-o nospace
-F _git_gc git-gc
1382 complete
-o default
-o nospace
-F _git_log git-log
1383 complete
-o default
-o nospace
-F _git_ls_remote git-ls-remote
1384 complete
-o default
-o nospace
-F _git_ls_tree git-ls-tree
1385 complete
-o default
-o nospace
-F _git_merge git-merge
1386 complete
-o default
-o nospace
-F _git_merge_base git-merge-base
1387 complete
-o default
-o nospace
-F _git_name_rev git-name-rev
1388 complete
-o default
-o nospace
-F _git_pull git-pull
1389 complete
-o default
-o nospace
-F _git_push git-push
1390 complete
-o default
-o nospace
-F _git_rebase git-rebase
1391 complete
-o default
-o nospace
-F _git_config git-config
1392 complete
-o default
-o nospace
-F _git_remote git-remote
1393 complete
-o default
-o nospace
-F _git_reset git-reset
1394 complete
-o default
-o nospace
-F _git_shortlog git-shortlog
1395 complete
-o default
-o nospace
-F _git_show git-show
1396 complete
-o default
-o nospace
-F _git_stash git-stash
1397 complete
-o default
-o nospace
-F _git_submodule git-submodule
1398 complete
-o default
-o nospace
-F _git_svn git-svn
1399 complete
-o default
-o nospace
-F _git_log git-show-branch
1400 complete
-o default
-o nospace
-F _git_tag git-tag
1401 complete
-o default
-o nospace
-F _git_log git-whatchanged
1403 # The following are necessary only for Cygwin, and only are needed
1404 # when the user has tab-completed the executable name and consequently
1405 # included the '.exe' suffix.
1407 if [ Cygwin
= "$(uname -o 2>/dev/null)" ]; then
1408 complete
-o default
-o nospace
-F _git_add git-add.exe
1409 complete
-o default
-o nospace
-F _git_apply git-apply.exe
1410 complete
-o default
-o nospace
-F _git git.exe
1411 complete
-o default
-o nospace
-F _git_branch git-branch.exe
1412 complete
-o default
-o nospace
-F _git_bundle git-bundle.exe
1413 complete
-o default
-o nospace
-F _git_cherry git-cherry.exe
1414 complete
-o default
-o nospace
-F _git_describe git-describe.exe
1415 complete
-o default
-o nospace
-F _git_diff git-diff.exe
1416 complete
-o default
-o nospace
-F _git_format_patch git-format-patch.exe
1417 complete
-o default
-o nospace
-F _git_log git-log.exe
1418 complete
-o default
-o nospace
-F _git_ls_tree git-ls-tree.exe
1419 complete
-o default
-o nospace
-F _git_merge_base git-merge-base.exe
1420 complete
-o default
-o nospace
-F _git_name_rev git-name-rev.exe
1421 complete
-o default
-o nospace
-F _git_push git-push.exe
1422 complete
-o default
-o nospace
-F _git_config git-config
1423 complete
-o default
-o nospace
-F _git_shortlog git-shortlog.exe
1424 complete
-o default
-o nospace
-F _git_show git-show.exe
1425 complete
-o default
-o nospace
-F _git_log git-show-branch.exe
1426 complete
-o default
-o nospace
-F _git_tag git-tag.exe
1427 complete
-o default
-o nospace
-F _git_log git-whatchanged.exe