家酿的`git`不使用完成

当使用OSX的git时,在修改文件后,我可以简单地执行git commit <tab> ,然后自动完成文件的名称修改。 但是,如果我从自制软件安装更新版本的git,并且使用它,该function将不再有效(意思是我按<tab>键,只是“询问”我要做什么文件,甚至包括那些没有变化)。

任何人都可以阐明为什么,以及如何解决? 我更喜欢使用自制软件,因为它是最新的。

我的shell是zsh,安装bash-completionzsh-completions都没有问题(即使在遵循homebrew的安装后指示)。

另外,在安装git后用自制软件说

 Bash completion has been installed to: /usr/local/etc/bash_completion.d zsh completion has been installed to: /usr/local/share/zsh/site-functions 

所以我不能使用其中之一?

您正在寻找:

 brew install git bash-completion 

正如warpc的评论指出的那样,你需要在你的~/.bash_profile添加以下代码来获得自制的bash完成工作:

 if [ -f $(brew --prefix)/etc/bash_completion ]; then . $(brew --prefix)/etc/bash_completion fi 

以上是在安装bash完成公式时需要注意的地方。

这得到的git标签完成工作在OSX上,无需重新启动您的terminal:

 curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.bash && echo "source ~/.git-completion.bash" >> ~/.bash_profile && source ~/.bash_profile 

由于某种原因,我错过了$(brew --prefix)/etc/bash_completion的文件,所以@Graham Perks的正确答案对我来说并不适用

它结束了我的情况下的修复是:

 brew unlink bash-completion brew link bash-completion 

我解决了这个问题,发现$(brew --prefix)/etc/bash_completion在执行时返回了Permission denied 。 所以经过简单的说明:

 chmod +x $(brew --prefix)/etc/bash_completion 

现在一切正常。 我想知道为什么自制软件不能在安装时使bash_completion文件成为可执行文件。

我有同样的问题,甚至今天早上发现这个职位。 我通过使用brew update brew来修复问题,然后用brew reinstall git安装git来brew reinstall git

然后我被通知另一个阻止自制链接过程的文件,在我的情况下是/usr/local/share/zsh/site-functions/git-completion.bash 。 删除文件并运行brew link git解决了这个问题。 猜测这只是我们偶然发现的一个糟糕的配方版本。

如果其他人犯我愚蠢的错误,尝试brew install git 。 我使用的是Xcode附带的git ,并没有意识到我从来没有安装Homebrew的git来获得自动完成。

find一个工作解决scheme 这是最近的(16小时前撰写,2小时前提交),它直接来自自制软件 。

brew install git --without-completions

只是试了一下,它终于按预期工作。

第1步:下载自动完成脚本:

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

第2步:更新.bash_profile和.bashrc

 echo "source ~/git-completion.bash" >> .bash_profile echo "source ~/git-completion.bash" >> .bashrc 

这将像一个魅力工作

通过https://www.anintegratedworld.com/git-tab-autocomplete-on-osx-10-11-el-capitan/

这可能与在Lion中使用libedit而不是readline有关。

尝试在git之前安装readline。

 brew install readline 

对于那些已经安装了brew bash-completion的人来说。 我没有安装git完成脚本,找不到任何水龙头。

所以我手动添加它:

curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o $(brew --prefix)/etc/bash_completion.d/git

请注意,您必须重命名该文件并删除扩展才能正常工作。

如果你没有安装完成或安装,安装在接受的答案。

brew install git bash-completion

对我来说,我不得不说

 source $(brew --prefix)/etc/bash_completion 

.bashrc (而不是.bash_profile)来得到这个工作。

“.bash_profile为loginshell执行,而.bashrc为交互式非loginshell执行” – from .bash_profile和.bashrc有什么区别? 在我看来,MacOS Sierra不会在打开新的terminal窗口时执行.bash_profile ,只有.bashrc

我不会把它放在_bash_profile中,因为那样我就不得不重新启动/注销更新才能生效。