例如,在新的ubuntu机器上,我就运行了sudo apt-get git
,输入eg时没有完成git check[tab]
。
我没有在http://git-scm.com/docs上找到任何内容,但这些天IIRC完成已包含在git包中,我只需要在bashrc中输入正确的内容即可。
(cd ~ && exec cat .bashrc | grep completion)
。
例如,在新的ubuntu机器上,我就运行了sudo apt-get git
,输入eg时没有完成git check[tab]
。
我没有在http://git-scm.com/docs上找到任何内容,但这些天IIRC完成已包含在git包中,我只需要在bashrc中输入正确的内容即可。
(cd ~ && exec cat .bashrc | grep completion)
。
Answers:
在大多数发行版中,当您安装git时,会将git complete脚本安装到/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 autocomplete可能已损坏,通过运行以下命令重新安装应该可以解决此问题:
sudo apt-get install git-core bash-completion
您可以使用Homebrew或MacPorts安装gitcomplete。
如果$BASH_VERSION
> 4 :(brew install bash-completion@2
更新版本)请特别注意3.2.57(1)-发行版中Macash默认提供的bash版本。
添加到.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
sudo port install git +bash_completion
然后将此添加到您的.bash_profile
:
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
fi
本指南中的更多信息:安装Bash git完成
请注意,在所有情况下,都需要创建一个新的外壳程序(打开一个新的终端选项卡/窗口)以使更改生效。
/usr/share/bash-completion/completions/git
。 /etc/bash_completion.d/git-prompt
用于git提示支持,而不用于完成。
brew uninstall bash-completion
然后brew install git
如果以前通过其他方法安装git,则上述步骤将起作用。
我遇到了同样的问题,请按照以下步骤操作:
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
export https_proxy=proxy_ip:proxy_port
我真的不明白为什么它不能从系统中获取设置。
您看到的大多数说明都会告诉您下载
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.
在URL中使用代替master
。然后,当然,请确保在bash启动脚本中提供该资源。
/Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash
为安全起见,我将其与github上的2.17.1版本进行了比较,并进行了匹配。
git-core
并bash-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
只需在您的~/.bashrc
:
source /usr/share/bash-completion/completions/git
其他答案告诉您要安装bash-completion
,您不需要这样做,但是如果您这样做,则无需直接获取完成内容。您可以做一个或另一个,而不是两者都做。
一个更通用的解决方案是按照bash-completion项目的建议查询系统位置:
source "$(pkg-config --variable=completionsdir bash-completion)"/git
可能对某人有帮助:-
从以下链接下载.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-prompt.sh中定义了__git_ps1。类似于下载.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
源〜/ .bash.git将执行下载的文件并
export PS1='\W$(__git_ps1 "[%s]")
该命令将在当前工作目录(如果它是git存储库)之后附加检出分支名称。
所以它看起来像:
dir_Name[branch_name]
其中dir_Name是工作目录名称,而branch_name将是您当前正在使用的分支的名称。
请注意-__git_ps1区分大小写。
在Git项目的Github上,它们提供了一个bash文件来自动完成git命令。
您应该将其下载到主目录,并应强制bash运行它。这只是两个步骤,并且在以下博客文章中得到了很好的解释(逐步介绍)。
我已经在Mac上进行了测试,它也可以在其他系统上运行。您可以将相同的方法应用于其他操作系统。