163

OSX の git を使用している場合、ファイルを変更した後、単純にgit commit <tab>. ただし、homebrew から新しいバージョンの git をインストールして使用すると、その機能は動作しなくなります (つまり、押す<tab>と、変更のないファイルを含めて、どのファイルに対して実行するかを「尋ねる」だけです)。 )。

その理由とそれを解決する方法について、誰かが光を当てることができますか? 自作の git の方が最新なので、私は自作の git を使用したいと思います。

私のシェルは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

それで、私はそれらの1つを使用できるべきではありませんか?

4

19 に答える 19

314

あなたが探しています:

brew install git bash-completion

warpc のコメントにあるように、~/.bash_profilehomebrew の bash-completion を機能させるには、以下を追加する必要があります。

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

上記は、bash-completion 式をインストールする際の注意事項に記載されています。


注: Bash v4 以降を (経由でbrew install bash) 使用している場合はbrew install bash-completion@2、 を使用してタブ補完を有効に~/.bash_profileし、注意事項に記載されているように以下を に追加します。

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

$(brew --prefix)/etc/bash_completion.d/追加のエクスポートは、ディレクトリに含まれる可能性がある git、docker、youtube-dl、およびその他の補完に必要です。

于 2013-02-20T01:47:11.187 に答える
120

これは、ターミナルを再起動することなく、OSX で動作する git タブ補完を取得します。

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

編集: これは Catalina のデフォルトの zsh シェルでは機能しません。デフォルトのシェルを bash に戻したところ、再び機能しました。https://www.howtogeek.com/444596/how-to-change-the-default-shell-to-bash-in-macos-catalina/

于 2015-01-24T19:25:35.087 に答える
24

他の誰かが私の愚かな間違いを犯した場合に備えて、試してみてくださいbrew install gitgitXcode に付属の を使用していましたが、オートコンプリートを取得するために Homebrew の git をインストールしたことがないことに気づきませんでした。

于 2016-12-20T21:00:55.033 に答える
19

何らかの理由でファイルが見つからなかった$(brew --prefix)/etc/bash_completionので、@Graham Perks の正解はうまくいきませんでした

私の場合の修正は次のとおりでした:

brew unlink bash-completion
brew link bash-completion
于 2014-07-02T11:50:40.697 に答える
11

$(brew --prefix)/etc/bash_completion実行時に返されることを把握することで問題を解決しましたPermission denied。だから簡単な後:

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

すべてが正常に機能しています。bash_completionただし、なぜHomebrewがインストール時にファイルを実行可能にしないのか疑問に思っています.

于 2015-08-18T22:33:12.237 に答える
5

私も同じ問題を抱えていて、今朝この投稿を見つけました。brewを更新してbrew updateからgitを。で再インストールすることで問題を修正しましたbrew reinstall git

次に、自作のリンクプロセスをブロックしている別のファイルが通知されました。私の場合はでした/usr/local/share/zsh/site-functions/git-completion.bash。ファイルを削除して実行するとbrew link git、問題が解決しました。それは私たちが偶然見つけた悪いレシピバージョンだったと思います。

于 2013-03-02T16:34:49.190 に答える
5

実用的な解決策を見つけました。これはごく最近のもので (16 時間前に作成され、2 時間前にコミットされました)、homebrew から直接取得されます。

brew install git --without-completions

試してみたところ、最終的には意図したとおりに機能します。

于 2013-03-02T21:09:49.623 に答える
3

ステップ 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

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

上記が機能しない場合は、https://github.com/bobthecow/git-flow-completion/wiki/Install-Bash-git-completionを試してください

于 2016-09-28T06:41:48.650 に答える
1

これはMojave(OSX 10.14.1)でうまくいきました:

brew install bash-completion

次に、次の行を ~/.bash_profile に追加します。

[ -f /usr/local/etc/bash_completion ] && . /usr/local/etc/bash_completion
于 2018-11-07T19:12:15.607 に答える
0

Lion で readline の代わりに libedit が使用されていることが関係している可能性があります。

git の前に readline をインストールしてみてください。

brew install readline
于 2013-02-20T01:41:14.303 に答える
0

何も機能しない場合は、古いバージョンの がbashあり、bash 完了スクリプトが/usr/local/etc/profile.d/bash_completion.shスクリプトによって取得されていないことが原因である可能性があります。file の条件内に単純な echo を追加することで、これをテストできます/usr/local/etc/profile.d/bash_completion.sh

 10         if shopt -q progcomp && [ -r /usr/local/Cellar/bash-completion@2/2.11/share/bash-completion/bash_completion ]; then
 11             # Source completion code.
                echo "doing bash completion or not"
 12             . /usr/local/Cellar/bash-completion@2/2.11/share/bash-completion/bash_completion

そして、新しいターミナルを開きます。エコー メッセージが表示されない場合、条件は true と評価されません。私の場合、bashバージョンが古いため、mac 3.2.blah のデフォルトでした。

私はbrewから新しいbashをインストールしましたが、それを忘れていたためchsh、頭痛の種になりました。bash --version5.1.8を返しますが、有効なシェルはまだ古いものでした:)有効なbashをテストするには、次のことができます

for n in {0..5}
do
  echo "BASH_VERSINFO[$n] = ${BASH_VERSINFO[$n]}"
done

修正は、sudo chsh -s /usr/local/bin/bashその後完了が機能することでした。

于 2021-06-13T06:04:19.897 に答える
0

これが古い投稿であることは承知していますが、追加のパッケージをインストールする必要はありません。

Homebrew は、必要なものがすべて揃ったディレクトリがあることを通知しています。

.bash_profileBash を使用している場合は、次の行を単に追加できます。

source /usr/local/etc/bash_completion.d/git-completion.bash
于 2019-05-13T17:02:08.840 に答える