如何在 Windows 10 bash 中使用别名进行 bash 补全?

Joh*_*nny 5 git

我有一个 aliases.sh 文件修改为

alias gc='git checkout'
Run Code Online (Sandbox Code Playgroud)

并且在检查长分支名称时,如果我键入 gc <branchstring>+ TAB ,自动完成功能将不起作用,以便显示完整的分支名称。

Joh*_*nny 5

我查看了该线程中的所有内容,试图使其适用于并定制kpsfoo所说的内容,但适用于 Windows 10 操作系统。

步骤是:

1)复制git-completion.bash文件

<your git install folder>/etc/git-completion.bash
Run Code Online (Sandbox Code Playgroud)

C:\Users\<YourUserName>\git-completion.bash

2)添加这行代码:

source ~/git-completion.bash到您的aliases.sh文件

(可以在 中找到<your git install folder>\etc\profile.d

3) 添加alias gc='git checkout' & 添加aliases.sh文件中__git_complete gco _git_checkout该行之后的任意位置 。 source ~/git-completion.bash

4) 重新启动 git bash 并享受别名自动完成功能!

示例:如果我有一个分支VeryVeryLongBranchName,并且当前位于dev分支上,并且想要切换到该分支,则无需键入, git checkout VeryVeryLongBranchName我可以仅键入 gc Very+ TAB 键,这与上面的指令等效。

我的 aliases.sh 文件中的所有内容的一个示例(并且它将被扩展,因为我发现需要其他别名)是:

alias ga="git add"
alias gb='git branch'
alias gba="git branch -a"
alias gc='git checkout'
alias gcb='git checkout -b'
alias gcam='git commit -a -m'
alias gm='git merge --no-ff'
alias gps='git push wpdev dev'
alias gpsm='git push wpdev master'
alias gpl='git pull wpdev dev'
alias gplm='git pull wpdev master'
alias st='git status'
alias l='git log --graph --pretty='\''%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'\'' --abbrev-commit'
alias last='log -1 HEAD'
alias gs='git stash'

# Enable the __git_complete function to autocomplete aliases once you press TAB
source ~/git-completion.bash

__git_complete ga _git_add
__git_complete gc _git_checkout
__git_complete gm _git_merge
__git_complete gb _git_branch
__git_complete gba _git_branch
__git_complete l _git_log

case "$TERM" in
xterm*)
    # The following programs are known to require a Win32 Console
    # for interactive usage, therefore let's launch them through winpty
    # when run inside `mintty`.
    for name in node ipython php php5 psql python2.7
    do
        case "$(type -p "$name".exe 2>/dev/null)" in
        ''|/usr/bin/*) continue;;
        esac
        alias $name="winpty $name.exe"
    done
    ;;
esac
Run Code Online (Sandbox Code Playgroud)

-值得注意的alias gm='git merge --no-ff'是:很好 __git_complete gm _git_merge (当输入gm加上分支名称中的字符串并按TAB时,它将自动完成,并且在运行命令后,合并将考虑--no-ff规则)

  • 在我的 Git 版本 2.28.0.windows.1 上,git-completion.bash 位于 `&lt;git-installation-folder&gt;/mingw64/share/git/completion/git-completion.bash` (3认同)