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

How do I add autocomplete to git aliases?

我使用适用于标准命令和简单别名 (co = checkout) 的 git-autocomplete.bash 文件设置了 git 自动完成功能,但我在 [=13] 中定义了更长的别名=] 文件,我想自动完成分支名称,但我找不到如何执行此操作。

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

我的别名是这样的:

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

其中 是分支名称 - 我希望它能自动完成

此处我们有两个 windows 操作系统选项:

msysgit

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

    来源~/git-流-completion.bash

Cygwin

  1. 下载并放置git-flow-completion.bash

    %CYGWIN_INSTALLATION_DIR%\etc\bash_completion.d

  2. 重命名为git-flow

    您可以按以下方式自动完成:git flow init 等等

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

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

更具体地说,我将 $line = $line -replace '^git mstage ', 'git checkout ' 添加为函数 TabExpansion 的第一行,这实际上会将我的别名视为等同于 git checkout,然后制表符扩展将表现为预计