如何配置git bash命令行完成?

时间:2012-09-13 03:25:27

标签: git bash

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

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

14 个答案:

答案 0 :(得分:136)

在Linux上

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

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

在某些版本的Ubuntu中,默认情况下可能会破坏git autocomplete,通过运行此命令重新安装应修复它:

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

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

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

添加到.bash_profile

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

MacPorts的

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(打开一个新的终端选项卡/窗口)以使更改生效。

答案 1 :(得分:50)

我有同样的问题,接下来的步骤:

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/

答案 2 :(得分:26)

您看到的大部分说明都会告诉您下载

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

请注意,网址中的v2.17.代替master。然后,当然,请确保在bash启动脚本中提供源代码。

答案 3 :(得分:15)

答案 4 :(得分:14)

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
    

答案 5 :(得分:2)

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

source /etc/bash_completion.d/git-prompt

您可以点击/usr/lib/git-core文件夹中的链接。您可以在那里找到指令,如何设置PS1或使用__git_ps1

答案 6 :(得分:2)

可能对某人有帮助: -

从以下链接下载.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存储库)之后追加checkout out分支名称。

所以它看起来像: -

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

请注意 - __git_ps1区分大小写。

答案 7 :(得分:0)

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

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

其他答案告诉您安装bash-completion,您不需要这样做,但是如果您这样做,则无需直接获取完成内容。您可以做一个或另一个,而不是两个都做。

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

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

答案 8 :(得分:0)

Arch Linux

其中一个bash启动文件中的源tabel_sales.columns("index column" or "column name").search("value").draw();

例如:

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

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

答案 9 :(得分:0)

对于Windows

尝试了很多事情以在Windows命令行(cmd)上实现自动完成...最终如何在Windows 10上对我有效:

答案 10 :(得分:0)

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)。您只需要在该目录中查找即可。我很想知道是否有更好的方法。

答案 11 :(得分:0)

macOS 通过 Xcode 开发者工具

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

如果您已经安装了 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 中测试)

答案 12 :(得分:-1)

Ubuntu的

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

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

答案 13 :(得分:-1)

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

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

code-worrier blog: autocomplete-git/

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