在Windows上的git bash中启用自动补全?

35

我希望能够打字

git checkout <start-of-branch-name>

...然后按下tab键,让分支名自动完成。我该如何启用此功能?


2
对我来说,这只在git bash中起作用。如果你使用Windows系统,我建议使用带有posh-git的PowerShell。 - Cristian Lupascu
2
那个评论 ^ 是一个更好的答案,因为在 Windows 上 /etc/ 不存在,而且你不会在没有先使用 curl 下载它的情况下拥有那个 bash 文件。 - Dominic
上面的链接(code-worrier.com)已经不存在了(2018年11月)。 - kazbeel
1个回答

6
首先,问题可能很简单,就是您不在一个受git控制的路径下。通过输入 "git status" 命令来检查并查看是否有错误。
如果您正在一个git路径下,请尝试获取 "/etc/bash_completion.d/git" 文件,并再次尝试Tab键补全。如果这个方法有效,请执行以下操作:
1. 将以下内容添加到您的 "~/.bashrc" 文件中:
`. /etc/bash_completion.d/git`
2. 退出登录。 3. 打开一个新的mintty会话(您正在使用mintty吗?从 "cmd" 提示符或Powershell可能无法使用Tab自动完成)。
4. 输入 "git",然后跟一个空格,再按两下Tab键进行测试。您应该会得到一系列的git子命令。
现在,分支名称上的Tab键补全应该可以正常使用了。例如,"git branch ma <TAB>" 应该自动完成为 "git branch master"。

13
你漏掉了一些重要的细节。假设你正在使用git-bash,你需要执行mkdir -p /etc/bash_completion.d/git对吗?而且你必须从某个地方获取git自动完成目录/脚本... - rfay
1
这是一个综合回答该问题的链接,虽然针对ssh,但git的工作方式类似:https://unix.stackexchange.com/questions/136351/autocomplete-server-names-for-ssh-and-scp - Tamás Panyi
1
对我来说,使用Cygwin的路径是/usr/share/bash-completion/completions/git而不是/etc/bash_completion.d/git - pedrito
4
使用 git-bash,我的路径是 /mingw64/share/git/completion/,它映射到 C:\Program Files\Git\mingw64\share\git\completion - Tim Abell
@rfay,我不需要做你必须做的mkdir命令。但是,如果它不在你的会话中,你就需要创建它。 - havoc1
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接