家酿的`git`不使用完成
当使用OSX的git时,在修改文件后,我可以简单地执行git commit <tab>
,然后自动完成文件的名称修改。 但是,如果我从自制软件安装更新版本的git,并且使用它,该function将不再有效(意思是我按<tab>
键,只是“询问”我要做什么文件,甚至包括那些没有变化)。
任何人都可以阐明为什么,以及如何解决? 我更喜欢使用自制软件,因为它是最新的。
我的shell是zsh,安装bash-completion
或zsh-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中,因为那样我就不得不重新启动/注销更新才能生效。