GIT 自动补全命令,分支名 以及 高亮显示当前分支
来源:互联网 发布:网络暴力的案例 编辑:程序博客网 时间:2024/05/30 23:30
GIT 自动补全命令,分支名 以及 高亮显示当前分支
配置
- git clone https://github.com/git/git.git
- contrib/completion/git-completion.bash 自动补全
- contrib/completion/git-prompt.sh 高亮显示当前分支名称
- 将git-completion.bash下载到用户目录,可以重命名为 .git-completion.bash .git-prompt.sh作为隐藏文件
- 在 .bashrc 中加入一下代码
source ~/.git-completion.bash# 显示分支官方实现GIT_PS1_SHOWDIRTYSTATE=trueGIT_PS1_SHOWCOLORHINTS=true if [ -f ~/.git-completion.bash ]; then source ~/.git-prompt.sh PROMPT_COMMAND='__git_ps1 "[\t][\u@\h:\w]" "\\\$ "'fi
- 然后刷新一下 .bashrc :source ~/.bashrc
- 即可生效
在配置时由于git-completion.bash版本问题,导致分支名称无法补全,提示 搞了一宿,终于在vimdiff下发现问题,并成功解决,心情甚爽,并附上两个文件,点击可下载!
分支名称补全提示
分支名称无法补全提示
diff 代码:
没有研究自己也看不懂, 能看懂的大神评论下吧
--- .git-completion.bash 2017-06-22 09:37:23.336295271 +0800+++ git_bak 2017-06-19 13:18:18.797790093 +0800@@ -28,6 +28,14 @@ # completion style. For example '!f() { : git commit ; ... }; f' will # tell the completion to use commit completion. This also works with aliases # of form "!sh -c '...'". For example, "!sh -c ': git commit ; ... '".+#+# You can set the following environment variables to influence the behavior of+# the completion routines:+#+# GIT_COMPLETION_CHECKOUT_NO_GUESS+#+# When set to "1", do not include "DWIM" suggestions in git-checkout+# completion (e.g., completing "foo" when "origin/foo" exists). case "$COMP_WORDBREAKS" in *:*) : great ;;@@ -213,6 +221,20 @@ } fi+# Fills the COMPREPLY array with prefiltered words without any additional+# processing.+# Callers must take care of providing only words that match the current word+# to be completed and adding any prefix and/or suffix (trailing space!), if+# necessary.+# 1: List of newline-separated matching completion words, complete with+# prefix and suffix.+__gitcomp_direct ()+{+ local IFS=$'\n'++ COMPREPLY=($1)+}+ __gitcompappend () { local x i=${#COMPREPLY[@]}@@ -338,14 +360,27 @@ done | sort | uniq }+# Lists branches from the local repository.+# 1: A prefix to be added to each listed branch (optional).+# 2: List only branches matching this word (optional; list all branches if+# unset or empty).+# 3: A suffix to be appended to each listed branch (optional). __git_heads () {- __git for-each-ref --format='%(refname:short)' refs/heads+ local pfx="${1-}" cur_="${2-}" sfx="${3-}"++ __git for-each-ref --format="${pfx//\%/%%}%(refname:strip=2)$sfx" \+ "refs/heads/$cur_*" "refs/heads/$cur_*/**" }+# Lists tags from the local repository.+# Accepts the same positional parameters as __git_heads() above. __git_tags () {- __git for-each-ref --format='%(refname:short)' refs/tags+ local pfx="${1-}" cur_="${2-}" sfx="${3-}"++ __git for-each-ref --format="${pfx//\%/%%}%(refname:strip=2)$sfx" \+ "refs/tags/$cur_*" "refs/tags/$cur_*/**" } # Lists refs from the local (by default) or from a remote repository.@@ -354,11 +389,21 @@ # Can be the name of a configured remote, a path, or a URL. # 2: In addition to local refs, list unique branches from refs/remotes/ for # 'git checkout's tracking DWIMery (optional; ignored, if set but empty).+# 3: A prefix to be added to each listed ref (optional).+# 4: List only refs matching this word (optional; list all refs if unset or+# empty).+# 5: A suffix to be appended to each listed ref (optional; ignored, if set+# but empty).+#+# Use __git_complete_refs() instead. __git_refs () { local i hash dir track="${2-}" local list_refs_from=path remote="${1-}"- local format refs pfx+ local format refs+ local pfx="${3-}" cur_="${4-$cur}" sfx="${5-}"+ local match="${4-}"+ local fer_pfx="${pfx//\%/%%}" # "escape" for-each-ref format specifiers __git_find_repo_path dir="$__git_repo_path"@@ -382,63 +427,78 @@ fi if [ "$list_refs_from" = path ]; then- case "$cur" in+ if [[ "$cur_" == ^* ]]; then+ pfx="$pfx^"+ fer_pfx="$fer_pfx^"+ cur_=${cur_#^}+ match=${match#^}+ fi+ case "$cur_" in refs|refs/*) format="refname"- refs="${cur%/*}"+ refs=("$match*" "$match*/**") track="" ;; *)- [[ "$cur" == ^* ]] && pfx="^" for i in HEAD FETCH_HEAD ORIG_HEAD MERGE_HEAD; do- if [ -e "$dir/$i" ]; then echo $pfx$i; fi+ case "$i" in+ $match*)+ if [ -e "$dir/$i" ]; then+ echo "$pfx$i$sfx"+ fi+ ;;+ esac done- format="refname:short"- refs="refs/tags refs/heads refs/remotes"+ format="refname:strip=2"+ refs=("refs/tags/$match*" "refs/tags/$match*/**"+ "refs/heads/$match*" "refs/heads/$match*/**"+ "refs/remotes/$match*" "refs/remotes/$match*/**") ;; esac- __git_dir="$dir" __git for-each-ref --format="$pfx%($format)" \- $refs+ __git_dir="$dir" __git for-each-ref --format="$fer_pfx%($format)$sfx" \+ "${refs[@]}" if [ -n "$track" ]; then # employ the heuristic used by git checkout # Try to find a remote branch that matches the completion word # but only output if the branch name is unique- local ref entry- __git for-each-ref --shell --format="ref=%(refname:short)" \- "refs/remotes/" | \- while read -r entry; do- eval "$entry"- ref="${ref#*/}"- if [[ "$ref" == "$cur"* ]]; then- echo "$ref"- fi- done | sort | uniq -u+ __git for-each-ref --format="$fer_pfx%(refname:strip=3)$sfx" \+ --sort="refname:strip=3" \+ "refs/remotes/*/$match*" "refs/remotes/*/$match*/**" | \+ uniq -u fi return fi- case "$cur" in+ case "$cur_" in refs|refs/*)- __git ls-remote "$remote" "$cur*" | \+ __git ls-remote "$remote" "$match*" | \ while read -r hash i; do case "$i" in *^{}) ;;- *) echo "$i" ;;+ *) echo "$pfx$i$sfx" ;; esac done ;; *) if [ "$list_refs_from" = remote ]; then- echo "HEAD"- __git for-each-ref --format="%(refname:short)" \- "refs/remotes/$remote/" | sed -e "s#^$remote/##"+ case "HEAD" in+ $match*)echo "${pfx}HEAD$sfx" ;;+ esac+ __git for-each-ref --format="$fer_pfx%(refname:strip=3)$sfx" \+ "refs/remotes/$remote/$match*" \+ "refs/remotes/$remote/$match*/**" else- __git ls-remote "$remote" HEAD \- "refs/tags/*" "refs/heads/*" "refs/remotes/*" |+ local query_symref+ case "HEAD" in+ $match*) query_symref="HEAD" ;;+ esac+ __git ls-remote "$remote" $query_symref \+ "refs/tags/$match*" "refs/heads/$match*" \+ "refs/remotes/$match*" | while read -r hash i; do case "$i" in *^{}) ;;- refs/*) echo "${i#refs/*/}" ;;- *) echo "$i" ;; # symbolic refs+ refs/*) echo "$pfx${i#refs/*/}$sfx" ;;+ *) echo "$pfx$i$sfx" ;; # symbolic refs esac done fi@@ -446,7 +506,38 @@ esac }+# Completes refs, short and long, local and remote, symbolic and pseudo.+#+# Usage: __git_complete_refs [<option>]...+# --remote=<remote>: The remote to list refs from, can be the name of a+# configured remote, a path, or a URL.+# --track: List unique remote branches for 'git checkout's tracking DWIMery.+# --pfx=<prefix>: A prefix to be added to each ref.+# --cur=<word>: The current ref to be completed. Defaults to the current+# word to be completed.+# --sfx=<suffix>: A suffix to be appended to each ref instead of the default+# space.+__git_complete_refs ()+{+ local remote track pfx cur_="$cur" sfx=" "++ while test $# != 0; do+ case "$1" in+ --remote=*) remote="${1##--remote=}" ;;+ --track) track="yes" ;;+ --pfx=*) pfx="${1##--pfx=}" ;;+ --cur=*) cur_="${1##--cur=}" ;;+ --sfx=*) sfx="${1##--sfx=}" ;;+ *) return 1 ;;+ esac+ shift+ done++ __gitcomp_direct "$(__git_refs "$remote" "$track" "$pfx" "$cur_" "$sfx")"+}+ # __git_refs2 requires 1 argument (to pass to __git_refs)+# Deprecated: use __git_complete_fetch_refspecs() instead. __git_refs2 () { local i@@ -455,6 +546,24 @@ done }+# Completes refspecs for fetching from a remote repository.+# 1: The remote repository.+# 2: A prefix to be added to each listed refspec (optional).+# 3: The ref to be completed as a refspec instead of the current word to be+# completed (optional)+# 4: A suffix to be appended to each listed refspec instead of the default+# space (optional).+__git_complete_fetch_refspecs ()+{+ local i remote="$1" pfx="${2-}" cur_="${3-$cur}" sfx="${4- }"++ __gitcomp_direct "$(+ for i in $(__git_refs "$remote" "" "" "$cur_") ; do+ echo "$pfx$i:$i$sfx"+ done+ )"+}+ # __git_refs_remotes requires 1 argument (to pass to ls-remote) __git_refs_remotes () {@@ -554,15 +663,15 @@ *...*) pfx="${cur_%...*}..." cur_="${cur_#*...}"- __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_"+ __git_complete_refs --pfx="$pfx" --cur="$cur_" ;; *..*) pfx="${cur_%..*}.." cur_="${cur_#*..}"- __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_"+ __git_complete_refs --pfx="$pfx" --cur="$cur_" ;; *)- __gitcomp_nl "$(__git_refs)"+ __git_complete_refs ;; esac }@@ -608,6 +717,7 @@ i="${words[c]}" case "$i" in --mirror) [ "$cmd" = "push" ] && no_complete_refspec=1 ;;+ -d|--delete) [ "$cmd" = "push" ] && lhs=0 ;; --all) case "$cmd" in push) no_complete_refspec=1 ;;@@ -647,23 +757,23 @@ case "$cmd" in fetch) if [ $lhs = 1 ]; then- __gitcomp_nl "$(__git_refs2 "$remote")" "$pfx" "$cur_"+ __git_complete_fetch_refspecs "$remote" "$pfx" "$cur_" else- __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_"+ __git_complete_refs --pfx="$pfx" --cur="$cur_" fi ;; pull|remote) if [ $lhs = 1 ]; then- __gitcomp_nl "$(__git_refs "$remote")" "$pfx" "$cur_"+ __git_complete_refs --remote="$remote" --pfx="$pfx" --cur="$cur_" else- __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_"+ __git_complete_refs --pfx="$pfx" --cur="$cur_" fi ;; push) if [ $lhs = 1 ]; then- __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_"+ __git_complete_refs --pfx="$pfx" --cur="$cur_" else- __gitcomp_nl "$(__git_refs "$remote")" "$pfx" "$cur_"+ __git_complete_refs --remote="$remote" --pfx="$pfx" --cur="$cur_" fi ;; esac@@ -1066,7 +1176,7 @@ case "$subcommand" in bad|good|reset|skip|start)- __gitcomp_nl "$(__git_refs)"+ __git_complete_refs ;; *) ;;@@ -1088,12 +1198,12 @@ case "$cur" in --set-upstream-to=*)- __gitcomp_nl "$(__git_refs)" "" "${cur##--set-upstream-to=}"+ __git_complete_refs --cur="${cur##--set-upstream-to=}" ;; --*) __gitcomp " --color --no-color --verbose --abbrev= --no-abbrev- --track --no-track --contains --merged --no-merged+ --track --no-track --contains --no-contains --merged --no-merged --set-upstream-to= --edit-description --list --unset-upstream --delete --move --remotes --column --no-column --sort= --points-at@@ -1101,9 +1211,9 @@ ;; *) if [ $only_local_ref = "y" -a $has_r = "n" ]; then- __gitcomp_nl "$(__git_heads)"+ __gitcomp_direct "$(__git_heads "" "$cur" " ")" else- __gitcomp_nl "$(__git_refs)"+ __git_complete_refs fi ;; esac@@ -1146,18 +1256,19 @@ *) # check if --track, --no-track, or --no-guess was specified # if so, disable DWIM mode- local flags="--track --no-track --no-guess" track=1- if [ -n "$(__git_find_on_cmdline "$flags")" ]; then- track=''+ local flags="--track --no-track --no-guess" track_opt="--track"+ if [ "$GIT_COMPLETION_CHECKOUT_NO_GUESS" = "1" ] ||+ [ -n "$(__git_find_on_cmdline "$flags")" ]; then+ track_opt='' fi- __gitcomp_nl "$(__git_refs '' $track)"+ __git_complete_refs $track_opt ;; esac } _git_cherry () {- __gitcomp_nl "$(__git_refs)"+ __git_complete_refs } _git_cherry_pick ()@@ -1172,7 +1283,7 @@ __gitcomp "--edit --no-commit --signoff --strategy= --mainline" ;; *)- __gitcomp_nl "$(__git_refs)"+ __git_complete_refs ;; esac }@@ -1208,6 +1319,7 @@ --template= --depth --single-branch+ --no-tags --branch --recurse-submodules --no-single-branch@@ -1224,7 +1336,7 @@ { case "$prev" in -c|-C)- __gitcomp_nl "$(__git_refs)" "" "${cur}"+ __git_complete_refs return ;; esac@@ -1237,7 +1349,7 @@ ;; --reuse-message=*|--reedit-message=*|\ --fixup=*|--squash=*)- __gitcomp_nl "$(__git_refs)" "" "${cur#*=}"+ __git_complete_refs --cur="${cur#*=}" return ;; --untracked-files=*)@@ -1277,7 +1389,7 @@ " return esac- __gitcomp_nl "$(__git_refs)"+ __git_complete_refs } __git_diff_algorithms="myers minimal patience histogram"@@ -1428,8 +1540,43 @@ _gitk }-__git_match_ctag() {- awk "/^${1//\//\\/}/ { print \$1 }" "$2"+# Lists matching symbol names from a tag (as in ctags) file.+# 1: List symbol names matching this word.+# 2: The tag file to list symbol names from.+# 3: A prefix to be added to each listed symbol name (optional).+# 4: A suffix to be appended to each listed symbol name (optional).+__git_match_ctag () {+ awk -v pfx="${3-}" -v sfx="${4-}" "+ /^${1//\//\\/}/ { print pfx \$1 sfx }+ " "$2"+}++# Complete symbol names from a tag file.+# Usage: __git_complete_symbol [<option>]...+# --tags=<file>: The tag file to list symbol names from instead of the+# default "tags".+# --pfx=<prefix>: A prefix to be added to each symbol name.+# --cur=<word>: The current symbol name to be completed. Defaults to+# the current word to be completed.+# --sfx=<suffix>: A suffix to be appended to each symbol name instead+# of the default space.+__git_complete_symbol () {+ local tags=tags pfx="" cur_="${cur-}" sfx=" "++ while test $# != 0; do+ case "$1" in+ --tags=*) tags="${1##--tags=}" ;;+ --pfx=*) pfx="${1##--pfx=}" ;;+ --cur=*) cur_="${1##--cur=}" ;;+ --sfx=*) sfx="${1##--sfx=}" ;;+ *) return 1 ;;+ esac+ shift+ done++ if test -r "$tags"; then+ __gitcomp_direct "$(__git_match_ctag "$cur_" "$tags" "$pfx" "$sfx")"+ fi } _git_grep ()@@ -1459,14 +1606,11 @@ case "$cword,$prev" in 2,*|*,-*)- if test -r tags; then- __gitcomp_nl "$(__git_match_ctag "$cur" tags)"- return- fi+ __git_complete_symbol && return ;; esac- __gitcomp_nl "$(__git_refs)"+ __git_complete_refs } _git_help ()@@ -1573,6 +1717,19 @@ if [ -f "$__git_repo_path/MERGE_HEAD" ]; then merge="--merge" fi+ case "$prev,$cur" in+ -L,:*:*)+ return # fall back to Bash filename completion+ ;;+ -L,:*)+ __git_complete_symbol --cur="${cur#:}" --sfx=":"+ return+ ;;+ -G,*|-S,*)+ __git_complete_symbol+ return+ ;;+ esac case "$cur" in --pretty=*|--format=*) __gitcomp "$__git_log_pretty_formats $(__git_pretty_aliases)@@ -1618,6 +1775,21 @@ " return ;;+ -L:*:*)+ return # fall back to Bash filename completion+ ;;+ -L:*)+ __git_complete_symbol --cur="${cur#-L:}" --sfx=":"+ return+ ;;+ -G*)+ __git_complete_symbol --pfx="-G" --cur="${cur#-G}"+ return+ ;;+ -S*)+ __git_complete_symbol --pfx="-S" --cur="${cur#-S}"+ return+ ;; esac __git_complete_revlist }@@ -1640,7 +1812,7 @@ --rerere-autoupdate --no-rerere-autoupdate --abort --continue" return esac- __gitcomp_nl "$(__git_refs)"+ __git_complete_refs } _git_mergetool ()@@ -1665,7 +1837,7 @@ return ;; esac- __gitcomp_nl "$(__git_refs)"+ __git_complete_refs } _git_mv ()@@ -1703,7 +1875,7 @@ ,*) case "$prev" in --ref)- __gitcomp_nl "$(__git_refs)"+ __git_complete_refs ;; *) __gitcomp "$subcommands --ref"@@ -1712,7 +1884,7 @@ ;; add,--reuse-message=*|append,--reuse-message=*|\ add,--reedit-message=*|append,--reedit-message=*)- __gitcomp_nl "$(__git_refs)" "" "${cur#*=}"+ __git_complete_refs --cur="${cur#*=}" ;; add,--*|append,--*) __gitcomp '--file= --message= --reedit-message=@@ -1731,7 +1903,7 @@ -m|-F) ;; *)- __gitcomp_nl "$(__git_refs)"+ __git_complete_refs ;; esac ;;@@ -1769,10 +1941,10 @@ --*=) ;; *:*)- __gitcomp_nl "$(__git_refs)" "" "${cur_#*:}"+ __git_complete_refs --cur="${cur_#*:}" ;; *)- __gitcomp_nl "$(__git_refs)" "" "$cur_"+ __git_complete_refs --cur="$cur_" ;; esac }@@ -1848,7 +2020,7 @@ return esac- __gitcomp_nl "$(__git_refs)"+ __git_complete_refs } _git_reflog ()@@ -1859,7 +2031,7 @@ if [ -z "$subcommand" ]; then __gitcomp "$subcommands" else- __gitcomp_nl "$(__git_refs)"+ __git_complete_refs fi }@@ -2005,7 +2177,7 @@ return ;; branch.*.merge)- __gitcomp_nl "$(__git_refs)"+ __git_complete_refs return ;; branch.*.rebase)@@ -2109,7 +2281,7 @@ ;; branch.*) local pfx="${cur%.*}." cur_="${cur#*.}"- __gitcomp_nl "$(__git_heads)" "$pfx" "$cur_" "."+ __gitcomp_direct "$(__git_heads "$pfx" "$cur_" ".")" __gitcomp_nl_append $'autosetupmerge\nautosetuprebase\n' "$pfx" "$cur_" return ;;@@ -2164,14 +2336,23 @@ esac __gitcomp " add.ignoreErrors+ advice.amWorkDir advice.commitBeforeMerge advice.detachedHead advice.implicitIdentity- advice.pushNonFastForward+ advice.pushAlreadyExists+ advice.pushFetchFirst+ advice.pushNeedsForce+ advice.pushNonFFCurrent+ advice.pushNonFFMatching+ advice.pushUpdateRejected advice.resolveConflict+ advice.rmHints advice.statusHints+ advice.statusUoption alias. am.keepcr+ am.threeWay apply.ignorewhitespace apply.whitespace branch.autosetupmerge@@ -2216,19 +2397,26 @@ color.status.added color.status.changed color.status.header+ color.status.localBranch color.status.nobranch+ color.status.remoteBranch color.status.unmerged color.status.untracked color.status.updated color.ui+ commit.cleanup+ commit.gpgSign commit.status commit.template+ commit.verbose core.abbrev core.askpass core.attributesfile core.autocrlf core.bare core.bigFileThreshold+ core.checkStat+ core.commentChar core.compression core.createObject core.deltaBaseCacheLimit@@ -2238,6 +2426,8 @@ core.fileMode core.fsyncobjectfiles core.gitProxy+ core.hideDotFiles+ core.hooksPath core.ignoreStat core.ignorecase core.logAllRefUpdates@@ -2245,20 +2435,30 @@ core.notesRef core.packedGitLimit core.packedGitWindowSize+ core.packedRefsTimeout core.pager+ core.precomposeUnicode core.preferSymlinkRefs core.preloadindex+ core.protectHFS+ core.protectNTFS core.quotepath core.repositoryFormatVersion core.safecrlf core.sharedRepository core.sparseCheckout+ core.splitIndex+ core.sshCommand core.symlinks core.trustctime core.untrackedCache core.warnAmbiguousRefs core.whitespace core.worktree+ credential.helper+ credential.useHttpPath+ credential.username+ credentialCache.ignoreSIGHUP diff.autorefreshindex diff.external diff.ignoreSubmodules@@ -2290,15 +2490,19 @@ format.thread format.to gc.+ gc.aggressiveDepth gc.aggressiveWindow gc.auto+ gc.autoDetach gc.autopacklimit+ gc.logExpiry gc.packrefs gc.pruneexpire gc.reflogexpire gc.reflogexpireunreachable gc.rerereresolved gc.rerereunresolved+ gc.worktreePruneExpire gitcvs.allbinary gitcvs.commitmsgannotation gitcvs.dbTableNamePrefix@@ -2516,7 +2720,7 @@ return ;; esac- __gitcomp_nl "$(__git_refs)"+ __git_complete_refs } _git_rerere ()@@ -2540,7 +2744,7 @@ return ;; esac- __gitcomp_nl "$(__git_refs)"+ __git_complete_refs } _git_revert ()@@ -2559,7 +2763,7 @@ return ;; esac- __gitcomp_nl "$(__git_refs)"+ __git_complete_refs } _git_rm ()@@ -2639,7 +2843,7 @@ _git_stash () { local save_opts='--all --keep-index --no-keep-index --quiet --patch --include-untracked'- local subcommands='save list show apply clear drop pop create branch'+ local subcommands='push save list show apply clear drop pop create branch' local subcommand="$(__git_find_on_cmdline "$subcommands")" if [ -z "$subcommand" ]; then case "$cur" in@@ -2654,6 +2858,9 @@ esac else case "$subcommand,$cur" in+ push,--*)+ __gitcomp "$save_opts --message"+ ;; save,--*) __gitcomp "$save_opts" ;;@@ -2667,7 +2874,7 @@ ;; branch,*) if [ $cword -eq 3 ]; then- __gitcomp_nl "$(__git_refs)";+ __git_complete_refs else __gitcomp_nl "$(__git stash list \ | sed -n -e 's/:.*//p')"@@ -2834,7 +3041,7 @@ i="${words[c]}" case "$i" in -d|-v)- __gitcomp_nl "$(__git_tags)"+ __gitcomp_direct "$(__git_tags "" "$cur" " ")" return ;; -f)@@ -2849,11 +3056,11 @@ ;; -*|tag) if [ $f = 1 ]; then- __gitcomp_nl "$(__git_tags)"+ __gitcomp_direct "$(__git_tags "" "$cur" " ")" fi ;; *)- __gitcomp_nl "$(__git_refs)"+ __git_complete_refs ;; esac@@ -2862,7 +3069,7 @@ __gitcomp " --list --delete --verify --annotate --message --file --sign --cleanup --local-user --force --column --sort=- --contains --points-at --merged --no-merged --create-reflog+ --contains --no-contains --points-at --merged --no-merged --create-reflog " ;; esac@@ -3024,6 +3231,15 @@ esac }+ __gitcomp_direct ()+ {+ emulate -L zsh++ local IFS=$'\n'+ compset -P '*[=:]'+ compadd -Q -- ${=1} && _ret=0+ }+ __gitcomp_nl () { emulate -L zsh
阅读全文
1 0
- GIT 自动补全命令,分支名 以及 高亮显示当前分支
- git 获取当前分支名
- Terminal git 显示当前分支
- git命令自动补全
- git 命令自动补全
- git 命令自动补全
- git命令自动补全
- linux下显示git当前分支
- linux bash 脚本获取git当前的分支名
- TeXworks显示行号、语法高亮、自动补全
- git命令之git tag 给当前分支打标签
- git命令之git tag 给当前分支打标签
- git命令之git tag 给当前分支打标签
- git命令之git tag 给当前分支打标签
- git命令之git tag 给当前分支打标签
- git命令之git tag 给当前分支打标签
- git命令之git tag 给当前分支打标签
- git命令之git tag 给当前分支打标签
- Centos系统设置
- 深入解析Glide源码
- Discovery:解决错误2
- NYOJ:31-5个数求最值
- Python 学习日知录(三)- 创建多个Logger
- GIT 自动补全命令,分支名 以及 高亮显示当前分支
- Leetcode412. Fizz Buzz
- struts国际化
- 前端学习笔记--AJAX的使用(二)
- java高并发
- NYOJ:32-组合数
- Java创建对象
- Android Service的基本用法(1)
- NYOJ:33-蛇形填数