如何向git别名添加自动完成功能?

时间:2017-07-10 10:24:20

标签: git bash posh-git

我使用git-autocomplete.bash文件设置git autocomplete,该文件适用于标准命令和简单别名(co = checkout),但我在.git-config文件中定义的别名更长喜欢自动完成分支名称,我找不到如何做到这一点。

我在Windows Server 2012 R2上运行git 2.10.2.windows.1

我的别名如下:

mstage = "!git checkout stage && git pull && git reset --hard && git merge $1 --no-commit"

其中$1是分支名称 - 我希望自动完成

2 个答案:

答案 0 :(得分:2)

这里我们有两个Windows操作系统选项:

<强> msysgit

  1. 下载并将git-flow-completion.bash放入主目录(~/中) msysgit shell)
  2. 使用以下行将.bashrc文件添加到您的主目录 (或将此行添加到现有.bashrc文件中):

    source~ / git-flow-completion.bash

  3. <强> Cygwin的

    1. 下载git-flow-completion.bash并将其放入

      %CYGWIN_INSTALLATION_DIR%\etc\bash_completion.d

    2. 将其重命名为git-flow

      您可以自动完成以下内容:git flow init等。

答案 1 :(得分:1)

如果你在Windows上使用bash,@ pohit Poudels的答案会有效。如果您使用的是PowerShell,目前启用此自动完成功能的唯一方法是在安装后手动更改posh-git。

我在posh-git中更改了GitTabExpansion.ps1文件,类似于outlined on the repo

更具体地说,我添加了$line = $line -replace '^git mstage ', 'git checkout '作为函数TabExpansion的第一行,它实际上将我的别名视为等同于git checkout,然后标签扩展将按预期运行< / p>