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
769 __git_complete_revlist
774 local cur
="${COMP_WORDS[COMP_CWORD]}"
775 case "${COMP_WORDS[COMP_CWORD-1]}" in
777 __gitcomp
"$(__git_merge_strategies)"
782 __gitcomp
"$(__git_merge_strategies)" "" "${cur##--strategy=}"
787 --no-commit --no-stat --log --no-log --squash --strategy
791 __gitcomp
"$(__git_refs)"
796 __gitcomp
"$(__git_refs)"
801 __gitcomp
"--tags --all --stdin"
806 local cur
="${COMP_WORDS[COMP_CWORD]}"
808 case "${COMP_WORDS[0]},$COMP_CWORD" in
810 __gitcomp
"$(__git_remotes)"
813 __gitcomp
"$(__git_remotes)"
817 case "${COMP_WORDS[0]}" in
818 git-pull
) remote
="${COMP_WORDS[1]}" ;;
819 git
) remote
="${COMP_WORDS[2]}" ;;
821 __gitcomp
"$(__git_refs "$remote")"
828 local cur
="${COMP_WORDS[COMP_CWORD]}"
830 case "${COMP_WORDS[0]},$COMP_CWORD" in
832 __gitcomp
"$(__git_remotes)"
835 __gitcomp
"$(__git_remotes)"
841 case "${COMP_WORDS[0]}" in
842 git-push
) remote
="${COMP_WORDS[1]}" ;;
843 git
) remote
="${COMP_WORDS[2]}" ;;
845 __gitcomp
"$(__git_refs "$remote")" "" "${cur#*:}"
848 __gitcomp
"$(__git_refs)" + "${cur#+}"
851 __gitcomp
"$(__git_refs)"
860 local cur
="${COMP_WORDS[COMP_CWORD]}" dir
="$(__gitdir)"
861 if [ -d .dotest
] ||
[ -d "$dir"/.dotest-merge
]; then
862 __gitcomp
"--continue --skip --abort"
865 case "${COMP_WORDS[COMP_CWORD-1]}" in
867 __gitcomp
"$(__git_merge_strategies)"
872 __gitcomp
"$(__git_merge_strategies)" "" "${cur##--strategy=}"
876 __gitcomp
"--onto --merge --strategy --interactive"
879 __gitcomp
"$(__git_refs)"
884 local cur
="${COMP_WORDS[COMP_CWORD]}"
885 local prv
="${COMP_WORDS[COMP_CWORD-1]}"
888 __gitcomp
"$(__git_remotes)"
892 __gitcomp
"$(__git_refs)"
896 local remote
="${prv#remote.}"
897 remote
="${remote%.fetch}"
898 __gitcomp
"$(__git_refs_remotes "$remote")"
902 local remote
="${prv#remote.}"
903 remote
="${remote%.push}"
904 __gitcomp
"$(git --git-dir="$
(__gitdir
)" \
905 for-each-ref --format='%(refname):%(refname)' \
909 pull.twohead|pull.octopus
)
910 __gitcomp
"$(__git_merge_strategies)"
913 color.branch|color.
diff|color.status
)
914 __gitcomp
"always never auto"
919 black red green yellow blue magenta cyan white
920 bold dim ul blink reverse
932 --global --system --file=
934 --get --get-all --get-regexp
935 --add --unset --unset-all
936 --remove-section --rename-section
941 local pfx
="${cur%.*}."
943 __gitcomp
"remote merge" "$pfx" "$cur"
947 local pfx
="${cur%.*}."
949 __gitcomp
"$(__git_heads)" "$pfx" "$cur" "."
953 local pfx
="${cur%.*}."
956 url fetch push skipDefaultUpdate
957 receivepack uploadpack tagopt
962 local pfx
="${cur%.*}."
964 __gitcomp
"$(__git_remotes)" "$pfx" "$cur" "."
973 core.preferSymlinkRefs
974 core.logAllRefUpdates
975 core.loosecompression
976 core.repositoryFormatVersion
977 core.sharedRepository
978 core.warnAmbiguousRefs
980 core.packedGitWindowSize
995 color.diff.whitespace
1000 color.status.changed
1001 color.status.untracked
1006 format.subjectprefix
1010 gitcvs.dbname gitcvs.dbdriver gitcvs.dbuser gitcvs.dbpass
1011 gitcvs.dbtablenameprefix
1014 gc.reflogexpireunreachable
1027 i18n.logOutputEncoding
1037 pack.deltaCacheLimit
1040 repack.useDeltaBaseOffset
1044 transfer.unpackLimit
1046 receive.denyNonFastForwards
1050 whatchanged.difftree
1057 local subcommands
="add rm show prune update"
1058 local subcommand
="$(__git_find_subcommand "$subcommands")"
1059 if [ -z "$subcommand" ]; then
1060 __gitcomp
"$subcommands"
1064 case "$subcommand" in
1066 __gitcomp
"$(__git_remotes)"
1069 local i c
='' IFS
=$
'\n'
1070 for i
in $
(git
--git-dir="$(__gitdir)" config
--list); do
1088 local cur
="${COMP_WORDS[COMP_CWORD]}"
1091 __gitcomp
"--mixed --hard --soft"
1095 __gitcomp
"$(__git_refs)"
1100 local cur
="${COMP_WORDS[COMP_CWORD]}"
1104 --max-count= --max-age= --since= --after=
1105 --min-age= --before= --until=
1107 --author= --committer= --grep=
1110 --numbered --summary
1115 __git_complete_revlist
1120 local cur
="${COMP_WORDS[COMP_CWORD]}"
1124 oneline short medium full fuller email raw
1125 " "" "${cur##--pretty=}"
1129 __gitcomp
"--pretty="
1138 local subcommands
='save list show apply clear drop pop create'
1139 if [ -z "$(__git_find_subcommand "$subcommands")" ]; then
1140 __gitcomp
"$subcommands"
1146 local subcommands
="add status init update"
1147 if [ -z "$(__git_find_subcommand "$subcommands")" ]; then
1148 local cur
="${COMP_WORDS[COMP_CWORD]}"
1151 __gitcomp
"--quiet --cached"
1154 __gitcomp
"$subcommands"
1164 init fetch clone rebase dcommit log find-rev
1165 set-tree commit-diff info create-ignore propget
1166 proplist show-ignore show-externals
1168 local subcommand
="$(__git_find_subcommand "$subcommands")"
1169 if [ -z "$subcommand" ]; then
1170 __gitcomp
"$subcommands"
1172 local remote_opts
="--username= --config-dir= --no-auth-cache"
1174 --follow-parent --authors-file= --repack=
1175 --no-metadata --use-svm-props --use-svnsync-props
1176 --log-window-size= --no-checkout --quiet
1177 --repack-flags --user-log-author $remote_opts
1180 --template= --shared= --trunk= --tags=
1181 --branches= --stdlayout --minimize-url
1182 --no-metadata --use-svm-props --use-svnsync-props
1183 --rewrite-root= $remote_opts
1186 --edit --rmdir --find-copies-harder --copy-similarity=
1189 local cur
="${COMP_WORDS[COMP_CWORD]}"
1190 case "$subcommand,$cur" in
1192 __gitcomp
"--revision= --fetch-all $fc_opts"
1195 __gitcomp
"--revision= $fc_opts $init_opts"
1198 __gitcomp
"$init_opts"
1202 --merge --strategy= --verbose --dry-run
1203 --fetch-all --no-rebase $cmt_opts $fc_opts
1207 __gitcomp
"--stdin $cmt_opts $fc_opts"
1209 create-ignore
,--*|propget
,--*|proplist
,--*|show-ignore
,--*|\
1211 __gitcomp
"--revision="
1215 --limit= --revision= --verbose --incremental
1216 --oneline --show-commit --non-recursive
1222 --merge --verbose --strategy= --local
1223 --fetch-all $fc_opts
1227 __gitcomp
"--message= --file= --revision= $cmt_opts"
1242 while [ $c -lt $COMP_CWORD ]; do
1243 i
="${COMP_WORDS[c]}"
1246 __gitcomp
"$(__git_tags)"
1256 case "${COMP_WORDS[COMP_CWORD-1]}" in
1262 __gitcomp
"$(__git_tags)"
1268 __gitcomp
"$(__git_refs)"
1275 local i c
=1 command __git_dir
1277 while [ $c -lt $COMP_CWORD ]; do
1278 i
="${COMP_WORDS[c]}"
1280 --git-dir=*) __git_dir
="${i#--git-dir=}" ;;
1281 --bare) __git_dir
="." ;;
1282 --version|
--help|
-p|
--paginate) ;;
1283 *) command="$i"; break ;;
1288 if [ -z "$command" ]; then
1289 case "${COMP_WORDS[COMP_CWORD]}" in
1290 --*=*) COMPREPLY
=() ;;
1302 *) __gitcomp
"$(__git_commands) $(__git_aliases)" ;;
1307 local expansion
=$
(__git_aliased_command
"$command")
1308 [ "$expansion" ] && command="$expansion"
1313 apply
) _git_apply
;;
1314 bisect
) _git_bisect
;;
1315 bundle
) _git_bundle
;;
1316 branch
) _git_branch
;;
1317 checkout
) _git_checkout
;;
1318 cherry
) _git_cherry
;;
1319 cherry-pick
) _git_cherry_pick
;;
1320 commit
) _git_commit
;;
1321 config
) _git_config
;;
1322 describe
) _git_describe
;;
1324 fetch
) _git_fetch
;;
1325 format-patch
) _git_format_patch
;;
1328 ls-remote
) _git_ls_remote
;;
1329 ls-tree
) _git_ls_tree
;;
1331 merge-base
) _git_merge_base
;;
1332 name-rev
) _git_name_rev
;;
1335 rebase
) _git_rebase
;;
1336 remote
) _git_remote
;;
1337 reset) _git_reset
;;
1338 shortlog
) _git_shortlog
;;
1340 show-branch
) _git_log
;;
1341 stash
) _git_stash
;;
1342 submodule
) _git_submodule
;;
1345 whatchanged
) _git_log
;;
1352 local cur
="${COMP_WORDS[COMP_CWORD]}"
1353 local g
="$(git rev-parse --git-dir 2>/dev/null)"
1355 if [ -f $g/MERGE_HEAD
]; then
1360 __gitcomp
"--not --all $merge"
1364 __git_complete_revlist
1367 complete
-o default
-o nospace
-F _git git
1368 complete
-o default
-o nospace
-F _gitk gitk
1369 complete
-o default
-o nospace
-F _git_am git-am
1370 complete
-o default
-o nospace
-F _git_apply git-apply
1371 complete
-o default
-o nospace
-F _git_bisect git-bisect
1372 complete
-o default
-o nospace
-F _git_branch git-branch
1373 complete
-o default
-o nospace
-F _git_bundle git-bundle
1374 complete
-o default
-o nospace
-F _git_checkout git-checkout
1375 complete
-o default
-o nospace
-F _git_cherry git-cherry
1376 complete
-o default
-o nospace
-F _git_cherry_pick git-cherry-pick
1377 complete
-o default
-o nospace
-F _git_commit git-commit
1378 complete
-o default
-o nospace
-F _git_describe git-describe
1379 complete
-o default
-o nospace
-F _git_diff git-diff
1380 complete
-o default
-o nospace
-F _git_fetch git-fetch
1381 complete
-o default
-o nospace
-F _git_format_patch git-format-patch
1382 complete
-o default
-o nospace
-F _git_gc git-gc
1383 complete
-o default
-o nospace
-F _git_log git-log
1384 complete
-o default
-o nospace
-F _git_ls_remote git-ls-remote
1385 complete
-o default
-o nospace
-F _git_ls_tree git-ls-tree
1386 complete
-o default
-o nospace
-F _git_merge git-merge
1387 complete
-o default
-o nospace
-F _git_merge_base git-merge-base
1388 complete
-o default
-o nospace
-F _git_name_rev git-name-rev
1389 complete
-o default
-o nospace
-F _git_pull git-pull
1390 complete
-o default
-o nospace
-F _git_push git-push
1391 complete
-o default
-o nospace
-F _git_rebase git-rebase
1392 complete
-o default
-o nospace
-F _git_config git-config
1393 complete
-o default
-o nospace
-F _git_remote git-remote
1394 complete
-o default
-o nospace
-F _git_reset git-reset
1395 complete
-o default
-o nospace
-F _git_shortlog git-shortlog
1396 complete
-o default
-o nospace
-F _git_show git-show
1397 complete
-o default
-o nospace
-F _git_stash git-stash
1398 complete
-o default
-o nospace
-F _git_submodule git-submodule
1399 complete
-o default
-o nospace
-F _git_svn git-svn
1400 complete
-o default
-o nospace
-F _git_log git-show-branch
1401 complete
-o default
-o nospace
-F _git_tag git-tag
1402 complete
-o default
-o nospace
-F _git_log git-whatchanged
1404 # The following are necessary only for Cygwin, and only are needed
1405 # when the user has tab-completed the executable name and consequently
1406 # included the '.exe' suffix.
1408 if [ Cygwin
= "$(uname -o 2>/dev/null)" ]; then
1409 complete
-o default
-o nospace
-F _git_add git-add.exe
1410 complete
-o default
-o nospace
-F _git_apply git-apply.exe
1411 complete
-o default
-o nospace
-F _git git.exe
1412 complete
-o default
-o nospace
-F _git_branch git-branch.exe
1413 complete
-o default
-o nospace
-F _git_bundle git-bundle.exe
1414 complete
-o default
-o nospace
-F _git_cherry git-cherry.exe
1415 complete
-o default
-o nospace
-F _git_describe git-describe.exe
1416 complete
-o default
-o nospace
-F _git_diff git-diff.exe
1417 complete
-o default
-o nospace
-F _git_format_patch git-format-patch.exe
1418 complete
-o default
-o nospace
-F _git_log git-log.exe
1419 complete
-o default
-o nospace
-F _git_ls_tree git-ls-tree.exe
1420 complete
-o default
-o nospace
-F _git_merge_base git-merge-base.exe
1421 complete
-o default
-o nospace
-F _git_name_rev git-name-rev.exe
1422 complete
-o default
-o nospace
-F _git_push git-push.exe
1423 complete
-o default
-o nospace
-F _git_config git-config
1424 complete
-o default
-o nospace
-F _git_shortlog git-shortlog.exe
1425 complete
-o default
-o nospace
-F _git_show git-show.exe
1426 complete
-o default
-o nospace
-F _git_log git-show-branch.exe
1427 complete
-o default
-o nospace
-F _git_tag git-tag.exe
1428 complete
-o default
-o nospace
-F _git_log git-whatchanged.exe