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:
48 case "$COMP_WORDBREAKS" in
50 *) COMP_WORDBREAKS="$COMP_WORDBREAKS:"
56 if [ -n "$__git_dir" ]; then
58 elif [ -d .git ]; then
61 git rev-parse --git-dir 2>/dev/null
63 elif [ -d "$1/.git" ]; then
72 local g="$(git rev-parse --git-dir 2>/dev/null)"
76 if [ -d "$g/../.dotest" ]
78 if test -f "$g/../.dotest/rebasing"
81 elif test -f "$g/../.dotest/applying"
87 b="$(git symbolic-ref HEAD 2>/dev/null)"
88 elif [ -f "$g/.dotest-merge/interactive" ]
91 b="$(cat "$g/.dotest-merge/head-name")"
92 elif [ -d "$g/.dotest-merge" ]
95 b="$(cat "$g/.dotest-merge/head-name")"
96 elif [ -f "$g/MERGE_HEAD" ]
99 b="$(git symbolic-ref HEAD 2>/dev/null)"
101 if [ -f "$g/BISECT_LOG" ]
105 if ! b="$(git symbolic-ref HEAD 2>/dev/null)"
107 if ! b="$(git describe --exact-match HEAD 2>/dev/null)"
109 b="$(cut -c1-7 "$g/HEAD")..."
115 printf "$1" "${b##refs/heads/}$r"
117 printf " (%s)" "${b##refs/heads/}$r"
124 local c IFS=' '$'\t'$'\n'
127 --*=*) printf %s$'\n' "$c$2" ;;
128 *.) printf %s$'\n' "$c$2" ;;
129 *) printf %s$'\n' "$c$2 " ;;
136 local cur="${COMP_WORDS[COMP_CWORD]}"
137 if [ $# -gt 2 ]; then
146 COMPREPLY=($(compgen -P "$2" \
147 -W "$(__gitcomp_1 "$1" "$4")" \
155 local cmd i is_hash=y dir="$(__gitdir "$1")"
156 if [ -d "$dir" ]; then
157 for i in $(git --git-dir="$dir" \
158 for-each-ref --format='%(refname)' \
160 echo "${i#refs/heads/}"
164 for i in $(git ls-remote "$1" 2>/dev/null); do
165 case "$is_hash,$i" in
168 n,refs/heads/*) is_hash=y; echo "${i#refs/heads/}" ;;
169 n,*) is_hash=y; echo "$i" ;;
176 local cmd i is_hash=y dir="$(__gitdir "$1")"
177 if [ -d "$dir" ]; then
178 for i in $(git --git-dir="$dir" \
179 for-each-ref --format='%(refname)' \
181 echo "${i#refs/tags/}"
185 for i in $(git ls-remote "$1" 2>/dev/null); do
186 case "$is_hash,$i" in
189 n,refs/tags/*) is_hash=y; echo "${i#refs/tags/}" ;;
190 n,*) is_hash=y; echo "$i" ;;
197 local cmd i is_hash=y dir="$(__gitdir "$1")"
198 if [ -d "$dir" ]; then
199 if [ -e "$dir/HEAD" ]; then echo HEAD; fi
200 for i in $(git --git-dir="$dir" \
201 for-each-ref --format='%(refname)' \
202 refs/tags refs/heads refs/remotes); do
204 refs/tags/*) echo "${i#refs/tags/}" ;;
205 refs/heads/*) echo "${i#refs/heads/}" ;;
206 refs/remotes/*) echo "${i#refs/remotes/}" ;;
212 for i in $(git ls-remote "$dir" 2>/dev/null); do
213 case "$is_hash,$i" in
216 n,refs/tags/*) is_hash=y; echo "${i#refs/tags/}" ;;
217 n,refs/heads/*) is_hash=y; echo "${i#refs/heads/}" ;;
218 n,refs/remotes/*) is_hash=y; echo "${i#refs/remotes/}" ;;
219 n,*) is_hash=y; echo "$i" ;;
227 for i in $(__git_refs "$1"); do
232 __git_refs_remotes ()
234 local cmd i is_hash=y
235 for i in $(git ls-remote "$1" 2>/dev/null); do
236 case "$is_hash,$i" in
239 echo "$i:refs/remotes/$1/${i#refs/heads/}"
243 n,refs/tags/*) is_hash=y;;
251 local i ngoff IFS=$'\n' d="$(__gitdir)"
252 shopt -q nullglob || ngoff=1
254 for i in "$d/remotes"/*; do
255 echo ${i#$d/remotes/}
257 [ "$ngoff" ] && shopt -u nullglob
258 for i in $(git --git-dir="$d" config --list); do
268 __git_merge_strategies ()
270 if [ -n "$__git_merge_strategylist" ]; then
271 echo "$__git_merge_strategylist"
274 sed -n "/^all_strategies='/{
275 s/^all_strategies='//
279 }" "$(git --exec-path)/git-merge"
281 __git_merge_strategylist=
282 __git_merge_strategylist="$(__git_merge_strategies 2>/dev/null)"
284 __git_complete_file ()
286 local pfx ls ref cur="${COMP_WORDS[COMP_CWORD]}"
303 case "$COMP_WORDBREAKS" in
305 *) pfx="$ref:$pfx" ;;
309 COMPREPLY=($(compgen -P "$pfx" \
310 -W "$(git --git-dir="$(__gitdir)" ls-tree "$ls" \
311 | sed '/^100... blob /{
327 __gitcomp "$(__git_refs)"
332 __git_complete_revlist ()
334 local pfx cur="${COMP_WORDS[COMP_CWORD]}"
339 __gitcomp "$(__git_refs)" "$pfx" "$cur"
344 __gitcomp "$(__git_refs)" "$pfx" "$cur"
347 __gitcomp "$(__git_refs)"
354 if [ -n "$__git_commandlist" ]; then
355 echo "$__git_commandlist"
359 for i in $(git help -a|egrep '^ ')
362 *--*) : helper pattern;;
363 applymbox) : ask gittus;;
364 applypatch) : ask gittus;;
365 archimport) : import;;
366 cat-file) : plumbing;;
367 check-attr) : plumbing;;
368 check-ref-format) : plumbing;;
369 commit-tree) : plumbing;;
370 cvsexportcommit) : export;;
371 cvsimport) : import;;
372 cvsserver) : daemon;;
374 diff-files) : plumbing;;
375 diff-index) : plumbing;;
376 diff-tree) : plumbing;;
377 fast-import) : import;;
378 fsck-objects) : plumbing;;
379 fetch-pack) : plumbing;;
380 fmt-merge-msg) : plumbing;;
381 for-each-ref) : plumbing;;
382 hash-object) : plumbing;;
383 http-*) : transport;;
384 index-pack) : plumbing;;
385 init-db) : deprecated;;
386 local-fetch) : plumbing;;
387 mailinfo) : plumbing;;
388 mailsplit) : plumbing;;
389 merge-*) : plumbing;;
392 pack-objects) : plumbing;;
393 pack-redundant) : plumbing;;
394 pack-refs) : plumbing;;
395 parse-remote) : plumbing;;
396 patch-id) : plumbing;;
397 peek-remote) : plumbing;;
399 prune-packed) : plumbing;;
400 quiltimport) : import;;
401 read-tree) : plumbing;;
402 receive-pack) : plumbing;;
404 repo-config) : deprecated;;
406 rev-list) : plumbing;;
407 rev-parse) : plumbing;;
408 runstatus) : plumbing;;
409 sh-setup) : internal;;
411 send-pack) : plumbing;;
412 show-index) : plumbing;;
414 stripspace) : plumbing;;
415 symbolic-ref) : plumbing;;
416 tar-tree) : deprecated;;
417 unpack-file) : plumbing;;
418 unpack-objects) : plumbing;;
419 update-index) : plumbing;;
420 update-ref) : plumbing;;
421 update-server-info) : daemon;;
422 upload-archive) : plumbing;;
423 upload-pack) : plumbing;;
424 write-tree) : plumbing;;
425 verify-tag) : plumbing;;
431 __git_commandlist="$(__git_commands 2>/dev/null)"
436 for i in $(git --git-dir="$(__gitdir)" config --list); do
446 __git_aliased_command ()
448 local word cmdline=$(git --git-dir="$(__gitdir)" \
449 config --get "alias.$1")
450 for word in $cmdline; do
451 if [ "${word##-*}" ]; then
458 __git_find_subcommand ()
460 local word subcommand c=1
462 while [ $c -lt $COMP_CWORD ]; do
463 word="${COMP_WORDS[c]}"
464 for subcommand in $1; do
465 if [ "$subcommand" = "$word" ]; then
474 __git_has_doubledash ()
477 while [ $c -lt $COMP_CWORD ]; do
478 if [ "--" = "${COMP_WORDS[c]}" ]; then
486 __git_whitespacelist="nowarn warn error error-all strip"
490 local cur="${COMP_WORDS[COMP_CWORD]}"
491 if [ -d .dotest ]; then
492 __gitcomp "--skip --resolved"
497 __gitcomp "$__git_whitespacelist" "" "${cur##--whitespace=}"
502 --signoff --utf8 --binary --3way --interactive
512 local cur="${COMP_WORDS[COMP_CWORD]}"
515 __gitcomp "$__git_whitespacelist" "" "${cur##--whitespace=}"
520 --stat --numstat --summary --check --index
521 --cached --index-info --reverse --reject --unidiff-zero
522 --apply --no-add --exclude=
523 --whitespace= --inaccurate-eof --verbose
532 __git_has_doubledash && return
534 local cur="${COMP_WORDS[COMP_CWORD]}"
538 --interactive --refresh --patch --update --dry-run
548 __git_has_doubledash && return
550 local subcommands="start bad good reset visualize replay log"
551 local subcommand="$(__git_find_subcommand "$subcommands")"
552 if [ -z "$subcommand" ]; then
553 __gitcomp "$subcommands"
557 case "$subcommand" in
559 __gitcomp "$(__git_refs)"
569 local i c=1 only_local_ref="n" has_r="n"
571 while [ $c -lt $COMP_CWORD ]; do
574 -d|-m) only_local_ref="y" ;;
580 case "${COMP_WORDS[COMP_CWORD]}" in
581 --*=*) COMPREPLY=() ;;
584 --color --no-color --verbose --abbrev= --no-abbrev
589 if [ $only_local_ref = "y" -a $has_r = "n" ]; then
590 __gitcomp "$(__git_heads)"
592 __gitcomp "$(__git_refs)"
600 local mycword="$COMP_CWORD"
601 case "${COMP_WORDS[0]}" in
603 local cmd="${COMP_WORDS[2]}"
604 mycword="$((mycword-1))"
607 local cmd="${COMP_WORDS[1]}"
612 __gitcomp "create list-heads verify unbundle"
620 __git_complete_revlist
629 __gitcomp "$(__git_refs)"
634 __gitcomp "$(__git_refs)"
639 local cur="${COMP_WORDS[COMP_CWORD]}"
642 __gitcomp "--edit --no-commit"
645 __gitcomp "$(__git_refs)"
652 __git_has_doubledash && return
654 local cur="${COMP_WORDS[COMP_CWORD]}"
658 --all --author= --signoff --verify --no-verify
659 --edit --amend --include --only
668 __gitcomp "$(__git_refs)"
673 __git_has_doubledash && return
675 local cur="${COMP_WORDS[COMP_CWORD]}"
678 __gitcomp "--cached --stat --numstat --shortstat --summary
679 --patch-with-stat --name-only --name-status --color
680 --no-color --color-words --no-renames --check
681 --full-index --binary --abbrev --diff-filter
682 --find-copies-harder --pickaxe-all --pickaxe-regex
683 --text --ignore-space-at-eol --ignore-space-change
684 --ignore-all-space --exit-code --quiet --ext-diff
686 --no-prefix --src-prefix= --dst-prefix=
687 --base --ours --theirs
697 __gitcomp "$(__git_refs)"
702 local cur="${COMP_WORDS[COMP_CWORD]}"
704 case "${COMP_WORDS[0]},$COMP_CWORD" in
706 __gitcomp "$(__git_remotes)"
709 __gitcomp "$(__git_remotes)"
715 case "$COMP_WORDBREAKS" in
717 *) pfx="${cur%%:*}:" ;;
719 __gitcomp "$(__git_refs)" "$pfx" "${cur#*:}"
723 case "${COMP_WORDS[0]}" in
724 git-fetch) remote="${COMP_WORDS[1]}" ;;
725 git) remote="${COMP_WORDS[2]}" ;;
727 __gitcomp "$(__git_refs2 "$remote")"
736 local cur="${COMP_WORDS[COMP_CWORD]}"
740 --stdout --attach --thread
742 --numbered --start-number
747 --full-index --binary
750 --no-prefix --src-prefix= --dst-prefix=
755 __git_complete_revlist
760 local cur="${COMP_WORDS[COMP_CWORD]}"
763 __gitcomp "--prune --aggressive"
772 __gitcomp "$(__git_remotes)"
782 __git_has_doubledash && return
784 local cur="${COMP_WORDS[COMP_CWORD]}"
788 oneline short medium full fuller email raw
789 " "" "${cur##--pretty=}"
794 relative iso8601 rfc2822 short local default
795 " "" "${cur##--date=}"
800 --max-count= --max-age= --since= --after=
801 --min-age= --before= --until=
802 --root --topo-order --date-order --reverse
804 --abbrev-commit --abbrev=
805 --relative-date --date=
806 --author= --committer= --grep=
808 --pretty= --name-status --name-only --raw
810 --left-right --cherry-pick
816 __git_complete_revlist
821 local cur="${COMP_WORDS[COMP_CWORD]}"
822 case "${COMP_WORDS[COMP_CWORD-1]}" in
824 __gitcomp "$(__git_merge_strategies)"
829 __gitcomp "$(__git_merge_strategies)" "" "${cur##--strategy=}"
834 --no-commit --no-stat --log --no-log --squash --strategy
838 __gitcomp "$(__git_refs)"
843 __gitcomp "$(__git_refs)"
848 __gitcomp "--tags --all --stdin"
853 local cur="${COMP_WORDS[COMP_CWORD]}"
855 case "${COMP_WORDS[0]},$COMP_CWORD" in
857 __gitcomp "$(__git_remotes)"
860 __gitcomp "$(__git_remotes)"
864 case "${COMP_WORDS[0]}" in
865 git-pull) remote="${COMP_WORDS[1]}" ;;
866 git) remote="${COMP_WORDS[2]}" ;;
868 __gitcomp "$(__git_refs "$remote")"
875 local cur="${COMP_WORDS[COMP_CWORD]}"
877 case "${COMP_WORDS[0]},$COMP_CWORD" in
879 __gitcomp "$(__git_remotes)"
882 __gitcomp "$(__git_remotes)"
888 case "${COMP_WORDS[0]}" in
889 git-push) remote="${COMP_WORDS[1]}" ;;
890 git) remote="${COMP_WORDS[2]}" ;;
894 case "$COMP_WORDBREAKS" in
896 *) pfx="${cur%%:*}:" ;;
899 __gitcomp "$(__git_refs "$remote")" "$pfx" "${cur#*:}"
902 __gitcomp "$(__git_refs)" + "${cur#+}"
905 __gitcomp "$(__git_refs)"
914 local cur="${COMP_WORDS[COMP_CWORD]}" dir="$(__gitdir)"
915 if [ -d .dotest ] || [ -d "$dir"/.dotest-merge ]; then
916 __gitcomp "--continue --skip --abort"
919 case "${COMP_WORDS[COMP_CWORD-1]}" in
921 __gitcomp "$(__git_merge_strategies)"
926 __gitcomp "$(__git_merge_strategies)" "" "${cur##--strategy=}"
930 __gitcomp "--onto --merge --strategy --interactive"
933 __gitcomp "$(__git_refs)"
938 local cur="${COMP_WORDS[COMP_CWORD]}"
939 local prv="${COMP_WORDS[COMP_CWORD-1]}"
942 __gitcomp "$(__git_remotes)"
946 __gitcomp "$(__git_refs)"
950 local remote="${prv#remote.}"
951 remote="${remote%.fetch}"
952 __gitcomp "$(__git_refs_remotes "$remote")"
956 local remote="${prv#remote.}"
957 remote="${remote%.push}"
958 __gitcomp "$(git --git-dir="$(__gitdir)" \
959 for-each-ref --format='%(refname):%(refname)' \
963 pull.twohead|pull.octopus)
964 __gitcomp "$(__git_merge_strategies)"
967 color.branch|color.diff|color.status)
968 __gitcomp "always never auto"
973 black red green yellow blue magenta cyan white
974 bold dim ul blink reverse
986 --global --system --file=
988 --get --get-all --get-regexp
989 --add --unset --unset-all
990 --remove-section --rename-section
995 local pfx="${cur%.*}."
997 __gitcomp "remote merge" "$pfx" "$cur"
1001 local pfx="${cur%.*}."
1003 __gitcomp "$(__git_heads)" "$pfx" "$cur" "."
1007 local pfx="${cur%.*}."
1010 url fetch push skipDefaultUpdate
1011 receivepack uploadpack tagopt
1016 local pfx="${cur%.*}."
1018 __gitcomp "$(__git_remotes)" "$pfx" "$cur" "."
1027 core.preferSymlinkRefs
1028 core.logAllRefUpdates
1029 core.loosecompression
1030 core.repositoryFormatVersion
1031 core.sharedRepository
1032 core.warnAmbiguousRefs
1034 core.packedGitWindowSize
1038 color.branch.current
1049 color.diff.whitespace
1054 color.status.changed
1055 color.status.untracked
1060 format.subjectprefix
1064 gitcvs.dbname gitcvs.dbdriver gitcvs.dbuser gitcvs.dbpass
1065 gitcvs.dbtablenameprefix
1068 gc.reflogexpireunreachable
1081 i18n.logOutputEncoding
1091 pack.deltaCacheLimit
1094 repack.useDeltaBaseOffset
1098 transfer.unpackLimit
1100 receive.denyNonFastForwards
1104 whatchanged.difftree
1111 local subcommands="add rm show prune update"
1112 local subcommand="$(__git_find_subcommand "$subcommands")"
1113 if [ -z "$subcommand" ]; then
1114 __gitcomp "$subcommands"
1118 case "$subcommand" in
1120 __gitcomp "$(__git_remotes)"
1123 local i c='' IFS=$'\n'
1124 for i in $(git --git-dir="$(__gitdir)" config --list); do
1142 __git_has_doubledash && return
1144 local cur="${COMP_WORDS[COMP_CWORD]}"
1147 __gitcomp "--mixed --hard --soft"
1151 __gitcomp "$(__git_refs)"
1156 __git_has_doubledash && return
1158 local cur="${COMP_WORDS[COMP_CWORD]}"
1162 --max-count= --max-age= --since= --after=
1163 --min-age= --before= --until=
1165 --author= --committer= --grep=
1168 --numbered --summary
1173 __git_complete_revlist
1178 local cur="${COMP_WORDS[COMP_CWORD]}"
1182 oneline short medium full fuller email raw
1183 " "" "${cur##--pretty=}"
1187 __gitcomp "--pretty="
1196 local subcommands='save list show apply clear drop pop create'
1197 if [ -z "$(__git_find_subcommand "$subcommands")" ]; then
1198 __gitcomp "$subcommands"
1204 __git_has_doubledash && return
1206 local subcommands="add status init update"
1207 if [ -z "$(__git_find_subcommand "$subcommands")" ]; then
1208 local cur="${COMP_WORDS[COMP_CWORD]}"
1211 __gitcomp "--quiet --cached"
1214 __gitcomp "$subcommands"
1224 init fetch clone rebase dcommit log find-rev
1225 set-tree commit-diff info create-ignore propget
1226 proplist show-ignore show-externals
1228 local subcommand="$(__git_find_subcommand "$subcommands")"
1229 if [ -z "$subcommand" ]; then
1230 __gitcomp "$subcommands"
1232 local remote_opts="--username= --config-dir= --no-auth-cache"
1234 --follow-parent --authors-file= --repack=
1235 --no-metadata --use-svm-props --use-svnsync-props
1236 --log-window-size= --no-checkout --quiet
1237 --repack-flags --user-log-author $remote_opts
1240 --template= --shared= --trunk= --tags=
1241 --branches= --stdlayout --minimize-url
1242 --no-metadata --use-svm-props --use-svnsync-props
1243 --rewrite-root= $remote_opts
1246 --edit --rmdir --find-copies-harder --copy-similarity=
1249 local cur="${COMP_WORDS[COMP_CWORD]}"
1250 case "$subcommand,$cur" in
1252 __gitcomp "--revision= --fetch-all $fc_opts"
1255 __gitcomp "--revision= $fc_opts $init_opts"
1258 __gitcomp "$init_opts"
1262 --merge --strategy= --verbose --dry-run
1263 --fetch-all --no-rebase $cmt_opts $fc_opts
1267 __gitcomp "--stdin $cmt_opts $fc_opts"
1269 create-ignore,--*|propget,--*|proplist,--*|show-ignore,--*|\
1271 __gitcomp "--revision="
1275 --limit= --revision= --verbose --incremental
1276 --oneline --show-commit --non-recursive
1282 --merge --verbose --strategy= --local
1283 --fetch-all $fc_opts
1287 __gitcomp "--message= --file= --revision= $cmt_opts"
1302 while [ $c -lt $COMP_CWORD ]; do
1303 i="${COMP_WORDS[c]}"
1306 __gitcomp "$(__git_tags)"
1316 case "${COMP_WORDS[COMP_CWORD-1]}" in
1322 __gitcomp "$(__git_tags)"
1328 __gitcomp "$(__git_refs)"
1335 local i c=1 command __git_dir
1337 while [ $c -lt $COMP_CWORD ]; do
1338 i="${COMP_WORDS[c]}"
1340 --git-dir=*) __git_dir="${i#--git-dir=}" ;;
1341 --bare) __git_dir="." ;;
1342 --version|--help|-p|--paginate) ;;
1343 *) command="$i"; break ;;
1348 if [ -z "$command" ]; then
1349 case "${COMP_WORDS[COMP_CWORD]}" in
1350 --*=*) COMPREPLY=() ;;
1362 *) __gitcomp "$(__git_commands) $(__git_aliases)" ;;
1367 local expansion=$(__git_aliased_command "$command")
1368 [ "$expansion" ] && command="$expansion"
1373 apply) _git_apply ;;
1374 bisect) _git_bisect ;;
1375 bundle) _git_bundle ;;
1376 branch) _git_branch ;;
1377 checkout) _git_checkout ;;
1378 cherry) _git_cherry ;;
1379 cherry-pick) _git_cherry_pick ;;
1380 commit) _git_commit ;;
1381 config) _git_config ;;
1382 describe) _git_describe ;;
1384 fetch) _git_fetch ;;
1385 format-patch) _git_format_patch ;;
1388 ls-remote) _git_ls_remote ;;
1389 ls-tree) _git_ls_tree ;;
1391 merge-base) _git_merge_base ;;
1392 name-rev) _git_name_rev ;;
1395 rebase) _git_rebase ;;
1396 remote) _git_remote ;;
1397 reset) _git_reset ;;
1398 shortlog) _git_shortlog ;;
1400 show-branch) _git_log ;;
1401 stash) _git_stash ;;
1402 submodule) _git_submodule ;;
1405 whatchanged) _git_log ;;
1412 __git_has_doubledash && return
1414 local cur="${COMP_WORDS[COMP_CWORD]}"
1415 local g="$(git rev-parse --git-dir 2>/dev/null)"
1417 if [ -f $g/MERGE_HEAD ]; then
1422 __gitcomp "--not --all $merge"
1426 __git_complete_revlist
1429 complete -o default -o nospace -F _git git
1430 complete -o default -o nospace -F _gitk gitk
1431 complete -o default -o nospace -F _git_am git-am
1432 complete -o default -o nospace -F _git_apply git-apply
1433 complete -o default -o nospace -F _git_bisect git-bisect
1434 complete -o default -o nospace -F _git_branch git-branch
1435 complete -o default -o nospace -F _git_bundle git-bundle
1436 complete -o default -o nospace -F _git_checkout git-checkout
1437 complete -o default -o nospace -F _git_cherry git-cherry
1438 complete -o default -o nospace -F _git_cherry_pick git-cherry-pick
1439 complete -o default -o nospace -F _git_commit git-commit
1440 complete -o default -o nospace -F _git_describe git-describe
1441 complete -o default -o nospace -F _git_diff git-diff
1442 complete -o default -o nospace -F _git_fetch git-fetch
1443 complete -o default -o nospace -F _git_format_patch git-format-patch
1444 complete -o default -o nospace -F _git_gc git-gc
1445 complete -o default -o nospace -F _git_log git-log
1446 complete -o default -o nospace -F _git_ls_remote git-ls-remote
1447 complete -o default -o nospace -F _git_ls_tree git-ls-tree
1448 complete -o default -o nospace -F _git_merge git-merge
1449 complete -o default -o nospace -F _git_merge_base git-merge-base
1450 complete -o default -o nospace -F _git_name_rev git-name-rev
1451 complete -o default -o nospace -F _git_pull git-pull
1452 complete -o default -o nospace -F _git_push git-push
1453 complete -o default -o nospace -F _git_rebase git-rebase
1454 complete -o default -o nospace -F _git_config git-config
1455 complete -o default -o nospace -F _git_remote git-remote
1456 complete -o default -o nospace -F _git_reset git-reset
1457 complete -o default -o nospace -F _git_shortlog git-shortlog
1458 complete -o default -o nospace -F _git_show git-show
1459 complete -o default -o nospace -F _git_stash git-stash
1460 complete -o default -o nospace -F _git_submodule git-submodule
1461 complete -o default -o nospace -F _git_svn git-svn
1462 complete -o default -o nospace -F _git_log git-show-branch
1463 complete -o default -o nospace -F _git_tag git-tag
1464 complete -o default -o nospace -F _git_log git-whatchanged
1466 # The following are necessary only for Cygwin, and only are needed
1467 # when the user has tab-completed the executable name and consequently
1468 # included the '.exe' suffix.
1470 if [ Cygwin = "$(uname -o 2>/dev/null)" ]; then
1471 complete -o default -o nospace -F _git_add git-add.exe
1472 complete -o default -o nospace -F _git_apply git-apply.exe
1473 complete -o default -o nospace -F _git git.exe
1474 complete -o default -o nospace -F _git_branch git-branch.exe
1475 complete -o default -o nospace -F _git_bundle git-bundle.exe
1476 complete -o default -o nospace -F _git_cherry git-cherry.exe
1477 complete -o default -o nospace -F _git_describe git-describe.exe
1478 complete -o default -o nospace -F _git_diff git-diff.exe
1479 complete -o default -o nospace -F _git_format_patch git-format-patch.exe
1480 complete -o default -o nospace -F _git_log git-log.exe
1481 complete -o default -o nospace -F _git_ls_tree git-ls-tree.exe
1482 complete -o default -o nospace -F _git_merge_base git-merge-base.exe
1483 complete -o default -o nospace -F _git_name_rev git-name-rev.exe
1484 complete -o default -o nospace -F _git_push git-push.exe
1485 complete -o default -o nospace -F _git_config git-config
1486 complete -o default -o nospace -F _git_shortlog git-shortlog.exe
1487 complete -o default -o nospace -F _git_show git-show.exe
1488 complete -o default -o nospace -F _git_log git-show-branch.exe
1489 complete -o default -o nospace -F _git_tag git-tag.exe
1490 complete -o default -o nospace -F _git_log git-whatchanged.exe