如何配置 git bash 命令行补全?

     2023-03-15     49

关键词:

【中文标题】如何配置 git bash 命令行补全?【英文标题】:How to configure git bash command line completion? 【发布时间】:2012-09-06 02:41:58 【问题描述】:

例如在一台新的 ubuntu 机器上,我刚刚运行了sudo apt-get git,并且在键入时没有完成,例如git check[tab].

我在http://git-scm.com/docs 上没有找到任何东西,但是这些天在 git 包中包含了 IIRC 完成,我只需要在我的 bashrc 中输入正确的条目。

【问题讨论】:

在 Ubuntu Precise(和 Fedora 17)上为我开箱即用。 要检查你是否默认拥有它,你可以运行(cd ~ && exec cat .bashrc | grep completion) 【参考方案1】:

在 Linux 上

在大多数发行版上,安装 git 时 git 完成脚本会安装到 /etc/bash_completion.d/(或 /usr/share/bash-completion/completions/git)中,无需去 github。您只需要使用它 - 将此行添加到您的 .bashrc:

source /etc/bash_completion.d/git
# or
source /usr/share/bash-completion/completions/git

在某些版本的 Ubuntu 中,git 自动完成功能可能默认被破坏,通过运行此命令重新安装应该可以修复它:

sudo apt-get install git-core bash-completion

在 Mac 上

您可以使用 Homebrew 或 MacPorts 安装 git 补全。

自制

如果$BASH_VERSION > 4:brew install bash-completion@2(更新版本) 请特别注意您拥有的 bash 版本,因为 MacOS 默认随附 3.2.57(1)-release。

添加到.bash_profile:

  [[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && . "/usr/local/etc/profile.d/bash_completion.sh"

对于旧版本的 bash:brew install bash-completion

添加到.bash_profile:

[ -f /usr/local/etc/bash_completion ] && . /usr/local/etc/bash_completion

Mac 端口

sudo port install git +bash_completion

然后将其添加到您的.bash_profile:

if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
fi

本指南中的更多信息:Install Bash git completion

请注意,在所有情况下,您都需要创建一个新的 shell(打开一个新的终端选项卡/窗口)才能使更改生效。

【讨论】:

大多数 *nix 机器(尤其是 Ubuntu)已经拥有该文件,因此只需将其提供给我的用户即可解决我的问题。谢谢。 ubuntu 可能有它作为 /etc/bash_completion.d/git-prompt 我有 Git 但没有 /etc/bash_completion.d 在我的 Ubuntu 14.04 中,这个文件是 /usr/share/bash-completion/completions/git/etc/bash_completion.d/git-prompt 用于 git prompt 支持,而不是用于完成。 警告:Mac homebrew 方法仅在您通过 homebrew 安装 git 时才有效,如果您之前通过其他方法安装了 git,则 brew uninstall bash-completion 然后brew install git,那么上述步骤将起作用。 【参考方案2】:

我遇到了同样的问题,请按照以下步骤操作:

curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.bash

然后将以下行添加到您的.bash_profile(通常在您的主文件夹下)

if [ -f ~/.git-completion.bash ]; then
  . ~/.git-completion.bash
fi

来源:http://code-worrier.com/blog/autocomplete-git/

【讨论】:

我在代理后面,所以我必须先设置代理才能让 curl 工作export https_proxy=proxy_ip:proxy_port 我真的不明白为什么它没有从系统获取设置。 实际上不需要在文件名前用一个点来隐藏该文件。另外:小心使用 git 版本(参见 wisbucky 的答案) 在 Linux 上按照上述说明操作后,我需要退出终端并再次打开以查看结果。另外,我在 curl Url 中更改了 git 版本。【参考方案3】:

您看到的大多数说明都会告诉您下载

https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash

并在您的 bash 启动脚本中获取它,例如 .bashrc

但这有一个问题,因为它引用了master 分支,这是git-completion.bash 的最新版本。问题是有时它会因为与你安装的 git 版本不兼容而崩溃。

事实上,现在这将被打破,因为 master 分支的 git-completion.bash 具有需要 git v2.18 的新功能,而包管理器和安装程序还没有更新到。你会得到一个错误unknown option: --list-cmds=list-mainporcelain,others,nohelpers,alias,list-complete,config

所以最安全的解决方案是引用与您安装的 git 匹配的版本/标签。例如:

https://raw.githubusercontent.com/git/git/v2.17.1/contrib/completion/git-completion.bash

请注意,它的 URL 中有一个 v2.17.,而不是 master。然后,当然,确保在 bash 启动脚本中获取它。

【讨论】:

这是最好的 macOS 答案。 哇...经过大约一个小时的 git 抨击我的大脑之后,您的评论是关键。感谢您提供此解决方案!黄金! 特定于 macos 版本的文件应该已经在磁盘上:/Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash 为了安全起见,我将它与 github 上的 2.17.1 版本进行了比较,它匹配。 在 Linux 上按照上述说明操作后,我需要退出终端并再次打开以查看结果。【参考方案4】:

Ubuntu 14.10

安装git-corebash-completion

sudo apt-get install -y git-core bash-completion

当前会话使用情况

source /usr/share/bash-completion/completions/git

在所有会话中始终启用它

echo "source /usr/share/bash-completion/completions/git" >> ~/.bashrc

【讨论】:

谢谢,这在 Ubuntu 16.04 LTS 上对我有用 :) 在 Debian 10 WSL 中最适合我。我没有在其他答案中提到的/etc/bash_completion.d/ 中的完成脚本,也不想从 github 手动下载一些东西【参考方案5】:

见https://github.com/git/git/blob/master/contrib/completion/git-completion.bash

您只需要获取完成脚本

【讨论】:

+1 此处也有说明(***.com/questions/11662735/…,此处为askubuntu.com/questions/33440/…)【参考方案6】:

只需在您的 ~/.bashrc 中执行此操作:

source /usr/share/bash-completion/completions/git

其他答案告诉您安装bash-completion,您不需要这样做,但如果您这样做,则无需直接获取完成。你做一个或另一个,而不是两者兼而有之。

更通用的解决方案是按照 bash-completion 项目的建议查询系统位置:

source "$(pkg-config --variable=completionsdir bash-completion)"/git

【讨论】:

您的通用解决方案在 Ubuntu 18.04 上非常适合我。首先,您的方法非常简洁——谢谢! 通用解决方案在 Void Linux 上运行良好,但我确实必须先安装 bash-completion。 bash-completion 应该自动完成。如果您有 git bash-completion 但没有 bash-completion,则需要它。【参考方案7】:

在我的 ubuntu 上,这里安装了一个文件:

source /etc/bash_completion.d/git-prompt

您可以通过链接进入/usr/lib/git-core 文件夹。你可以在那里找到一个说明,如何设置 PS1 或使用__git_ps1

【讨论】:

【参考方案8】:

可能对某人有帮助:--

从以下链接下载 .git-completion.bash 后,

curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.bash

并尝试使用 __git_ps1 函数,我收到错误--

 -bash: __git_ps1: command not found

显然我们需要从 master 单独下载脚本才能使这个命令工作,因为 __git_ps1 是在 git-prompt.sh 中定义的。所以类似于下载 .git-completion.bash ,获取 git-prompt.sh :

curl -L https://raw.github.com/git/git/master/contrib/completion/git-prompt.sh > ~/.bash_git

然后在您的 .bash_profile 中添加以下内容

source ~/.bash_git
if [ -f ~/.git-completion.bash ]; then
  . ~/.git-completion.bash
export PS1='\W$(__git_ps1 "[%s]")>'
fi

source ~/.bash.git 将执行下载的文件和

export PS1='\W$(__git_ps1 "[%s]") 命令将在当前工作目录(如果它是 git 存储库)之后附加结帐分支名称。

所以它看起来像:-

dir_Name[branch_name] 其中 dir_Name 是工作目录名称,branch_name 是您当前正在处理的分支的名称。

请注意——__git_ps1 区分大小写。

【讨论】:

【参考方案9】:

Arch Linux

在 bash 启动文件之一中获取 /usr/share/git/completion/git-completion.bash

例如:

# ~/.bashrc

source /usr/share/git/completion/git-completion.bash

您也许可以在 /usr/share/bash-completion/completions/git 等其他位置找到该脚本,但这些脚本对我不起作用。

【讨论】:

【参考方案10】:

窗口

它最终如何在 Windows 10 命令行 (cmd) 上为我工作:

安装Clink 将git-autocomplete.lua文件复制到C:\Users\<username>\AppData\local\clink目录中 重启 Windows

【讨论】:

【参考方案11】:

Ubuntu

有一个漂亮的答案here。在 Ubuntu 16.04 上为我工作

窗口

Git Bash 是允许自动完成的工具。不确定这是否是标准分发的一部分,因此您可以找到 this link 也很有用。 顺便说一句,Git Bash 允许使用 Linux shell 命令 在 windows 上工作,这对于有 GNU/Linux 环境经验的人来说是一件好事。

【讨论】:

【参考方案12】:

Mac M1

对于那些使用 Mac M1 环境的人,我可以通过 homebrew 安装:

brew install bash-completion

然后添加到我的 ~/.bash_profile 或 ~/.bashrc(无论你使用什么):

[[ -r "/opt/homebrew/Cellar/bash-completion/1.3_3/etc/profile.d/bash_completion.sh" ]] && . "/opt/homebrew/Cellar/bash-completion/1.3_3/etc/profile.d/bash_completion.sh"

您可能需要更新版本号 (1.3_3)。您只需要在该目录中查找它。我很想知道是否有更好的方法。

【讨论】:

应该是[[ -r "/opt/homebrew/etc/profile.d/bash_completion.sh" ]] && . "/opt/homebrew/etc/profile.d/bash_completion.sh" - 安装程序建议这样做。【参考方案13】:

macOS 通过 Xcode 开发者工具

在目前针对 macOS 发布的所有答案中,这仅在 jmt 的一个非常简短的 comment 中提到...

如果您已经安装了 Xcode 开发者工具,那么您不需要下载任何新的东西。

相反,您只需找到已经存在的git-completion.bash 文件并将其源到您的.bashrc 中。检查以下目录:

/Applications/Xcode.app/Contents/Developer/usr/share/git-core /Library/Developer/CommandLineTools/usr/share/git-core

如果做不到这一点,git 本身也许可以帮助你。当我按如下方式运行git config 时,git 报告一个来自gitconfig 文件的设置,该文件与我的git-completion.bash 位于同一目录中:

$ git config --show-origin --list
...
file:/Applications/Xcode.app/Contents/Developer/usr/share/git-core/gitconfig    credential.helper=osxkeychain
...

或者您可以随时暴力搜索您的机器并喝杯咖啡:

$ find / -type f -name git-completion.bash 2>/dev/null

因此,我的~/.bashrc 插入了以下内容:

# Git shell completion and prompt string on macOS
_git_dir="/Applications/Xcode.app/Contents/Developer/usr/share/git-core"
if [ -f "$_git_dir/git-completion.bash" ]; then
    source "$_git_dir/git-completion.bash"
fi
if [ -f "$_git_dir/git-prompt.sh" ]; then
    source "$_git_dir/git-prompt.sh"
fi
unset _git_dir

请注意,这也是 git prompt-string 脚本的来源,因为它位于同一目录中。

(在 macOS Catalina 中测试)

【讨论】:

【参考方案14】:

在 Git 项目的 Github 上,他们提供了一个 bash 文件来自动完成 git 命令。

您应该将它下载到主目录并强制 bash 运行它。这只是两个步骤,并在以下博客文章中完美解释(一步一步)。

code-worrier blog: autocomplete-git/

我已经在 mac 上测试过了,它应该也可以在其他系统上运行。您可以将相同的方法应用于其他操作系统。

【讨论】:

mac配置git命令补全功能

参考技术A在根目录下创建.git-completion.bash文件往里面添加https://github.com/git/git.git地址的”contrib/completion/“目录下的“git-completion.bash”文件的内容完成后source一下即可,这时候重新打开终端输入命令,已有补全提示PS:source之前... 查看详情

mac上git自动补全功能(代码片段)

在Mac上安装了git之后,发现命令不能自动补全,使用起来非常不方便,本文介绍怎么让git命令能够自动补全。确保bash能够自动补全在终端(本文使用的是OSX的终端)执行如下命令:brewlist看看是否已经安装有bash-completion如果没有... 查看详情

从大神到小白之路minishift命令补全

...欲善其事,必先利其器ubuntu下minishift和oc(openshiftcommand)命令行补全ubuntu默认使用bash,并且已经启用了命令补全功能前提minishift在ubuntu上能正常工作,oc命令加入path1.使用root用户sudosucd~2.生成minishift补全文件minishiftcompletionbash>... 查看详情

macgit命令自动补全

步骤如下:1、下载Git-completion.bash或者直接使用SourceTree去clone到本地。下载地址:https://github.com/markgandolfo/git-bash-completion2、从下载的git-bash-completion文件夹中,找到git-completion.bash,并将该文件拷贝到~/中(即将此文件复制到你自... 查看详情

mac上git自动补全功能(代码片段)

在Mac上安装了git之后,发现命令不能自动补全,使用起来非常不方便,本文介绍怎么让git命令能够自动补全。确保bash能够自动补全在终端(本文使用的是OSX的终端)执行如下命令:brewlist看看是否已经安装有bash-completion如果没有... 查看详情

git命令无法自动补全(sles11.3)

找到git-completionbash文件find/-name‘git-completion‘/usr/share/doc/git-1.7.1/contrib/completion/git-completion.bash 复制文件cp /usr/share/doc/git-1.7.1/contrib/completion/git-completion.bash/etc/bas 查看详情

mac代码自动补全git上(代码片段)

...tc/bash_completion];then.$(brew–prefix)/etc/bash_completionfi#3.增加Git命令补全```cd/usr/local/opt/bash?completion/etc/bashcompletion.dcd/usr/local/opt/bash?completion/etc/bashcompletion.d curl-L-O https://raw.github.com/git/git/master/contrib/completion/git-completion.bash br... 查看详情

如何像使用ubuntu一样方便使用tab键自动补全命令

如何像使用Ubuntu一样方便使用tab键自动补全命令,bash-completion增强bash的自动补全功能。最早接触的linux发行版本是ubuntu,后来学习工作等原因转向了RedHat系的发行版本,使用中发现同样使用的是bash但是redhat系中bash的补全功能却... 查看详情

macgit的安装及实现自动补全(代码片段)

1.检查是否装了brew$brewlist如果没有,拷贝以下命令到终端回车.可以安装好brewruby-e"$(curl-fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/install)"2.查看你是否已经安装了"bash-completion",如果没有,继续往下看: $brewinstallbash-completi... 查看详情

如何让 bash 自动完成功能与使用 shell 命令的 git 别名一起使用?

】如何让bash自动完成功能与使用shell命令的git别名一起使用?【英文标题】:HowdoIgetbashautocompletetoworkwithgitaliasesthatuseshellcommands?【发布时间】:2014-08-1013:43:51【问题描述】:在我的git配置中,我有一个相对较长的别名,它以漂亮... 查看详情

如何通过添加日期时间来配置 Git bash 提示?

】如何通过添加日期时间来配置Gitbash提示?【英文标题】:HowtoconfigureGitbashpromptbyaddingdatetime?【发布时间】:2012-10-1116:48:28【问题描述】:我的msysgitGitbash命令行提示现在看起来像这样:GitUserName@WorkStationNameWorkSpacePath(BranchName)我... 查看详情

10种有用的linuxbash_completion命令示例(代码片段)

...#xff1a;我们可以对这个bash补全进行加速,并使用complete命令将其提升到一个新的水平。本文分享自华为云社区《有用的LinuxBash_Completion命令示例(Steroids上的Bash命令行补全)》,作者:Tiamo_T。在Linux中,在键... 查看详情

mac:macgit的安装及实现自动补全(代码片段)

1.检查是否装了brew$brewlist如果没有,拷贝以下命令到终端回车.可以安装好brewruby-e"$(curl-fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/install)"2.查看你是否已经安装了"bash-completion",如果没有,继续往下看:$brewinstallbash-completion####... 查看详情

centos6安装bash-compltion命令补全增强包

...安装不上去,然后就想到先把rpm包下载下来在进行安装先配置好yum源,不会的可以参考https://www.linuxidc.com/Linux/2016-11/136701.htm然后安装yum–yinstalllrzsz.x86_64#用到后面来传送rpm包。我们可以到http://rpm.p 查看详情

mac系统实现git命令自动补全

...令的自动补全功能,现在分享如下。安装Homebrew首先安装配置Homebrew(注:如果已经安装过就跳过):      HomeBrew的网址:https://brew.sh/index_zh-cn 查看详情

说明tab键补全命令以及补全路径的原理

在使用Linux系统,输入命令按TAB可以把命令补全,需要安装软件包bash-completioncentos上安装命令:yum-yinstallbash-completionUbuntu上安装命令:apt-yinstallbash-completionshell是Linux系统的用户界面,提供了用户与内核交互操作的一种接口,接收用户输... 查看详情

如何在 Windows 的 git bash 中运行“make”命令?

】如何在Windows的gitbash中运行“make”命令?【英文标题】:Howtorun"make"commandingitbashinwindows?【发布时间】:2021-06-0601:13:09【问题描述】:任何人都可以帮助我使用“make”命令在Windows中运行Makefile。当我尝试从gitbash运行时... 查看详情

git命令介绍

...it版本,并选用你想使用的版本1which-agit//查看有哪些版本配置.bash_profile文件,选择自己需要的版本1vim.bash_profile加入需要制定环境相对路径1exportPATH="/user/local/git/bin:$SPAH"编辑好后,重新载入.bash_profile1source.bash_profile二、... 查看详情