如何在Windows 10 bash中使用bash完成与别名一起使用?

时间:2018-11-18 23:42:25

标签: git

我有一个用

修改的aliases.sh文件
alias gc='git checkout'

,并在检查了长的分支名称后(如果输入) gc <branchstring> + TAB不能自动完成,以便显示完整的分支名称。

1 个答案:

答案 0 :(得分:1)

我浏览了this thread中的所有内容,以尝试使其适用于并调整 kpsfoo 所说的内容,但适用于Windows 10操作系统。

步骤将是:

1)从

复制 git-completion.bash 文件
<your git install folder>/etc/git-completion.bash

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键,它等同于上面的说明。

alias.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

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