シェアする

  • このエントリーをはてなブックマークに追加

[mac]Mac Portsでgitをインストール。コマンド補完と、ターミナルでブランチ名を表示するまで

Dominic

macを買って1週間。ようやくWindowsの頃にできていたことが一通りできるようになりました。

開発環境を作るにあたって一番苦労したのがGitの導入でした。
Windowsならmysysgitで何も考えなくてもGit環境を作れましたがMacではなんかややこしい。

Gitのインストールまでは問題ないのですが、コード補完とブランチ名を表示させるまでにMacPortsを3回インストールし直しました…orz

参考サイト

参考にさせていただいたサイト

MacPortsのインストール

MacPortsのインストールにはXCodeが必要になるので、先にダウンロードしてインストールしておきます。

The MacPorts Project — Download & Installation
上記URLから、インストーラーをダウンロードして実行します。

「Mac OS X Package (.pkg) Installer」のセクションにOSのバージョンに応じたインストーラへのリンクがあります。

ダウンロードしたら.pkgをダブルクリックしてインストールします。

MacPorts Guide
英語ですが上記にインストール手順が書かれています。

インストール手順を読むと、selfupdateしておいた方がよさそうな感じなのでターミナルから

sudo port selfupdate

を実行しておきます。

コード補完のためbash-completionをインストールする

Gitをインストールする前にコード補完するためのbash-completionをインストールします。

ターミナルから

sudo port install bash-completion

を実行します。
MacPortsはRed-hatのyumなどと比べて異常に時間がかかるので気長に待ちます。

インストールが終わったら、ここからが大事。
デフォルトのターミナルを使う限りこのままではコード補完が効いていないので以下のURLに書かれた手順で設定を行います。

howto/bash-completion ? MacPorts

.bash_profileにbash_completion.shを詠込む設定を追加

これはバージョンによって書き方が違うようでかなり振り回されました。
結局上記サイトの公式な説明に従ってうまくいきましたので、この記事のコードを鵜呑みにせず上記のページを確認した方がよいでしょう。

bash-completion 2.0.1の場合は以下の記述でいけました。

.bash_profile

# bash-completion
if [ -f /opt/local/etc/profile.d/bash_completion.sh ]; then
    . /opt/local/etc/profile.d/bash_completion.sh
fi

ちなみにここで.profileではなく.bash_profileに書いているのは、次の手順でシェルを/opt/local/bin/bashに変更すると.profileに書いたものが反映されなかったからです。

macについてはわからないことだらけなので自信はありませんが、上記ページでも.bash_profileに書くように説明されているのでそれに準じることにします。
.bash_profileはデフォルトの状態ではホームディレクトリに存在しないのでviコマンドなどで作成します。

ターミナルの環境設定

ターミナルの環境設定(コマンド+,)から以下の設定を行います。

  1. 起動タブ > 開くシェル > コマンド(完全パス)に「/opt/local/bin/bash -l」
  2. 設定タブ > ウィンドウを閉じる前の確認 > ログインシェルと次の・・・に「bash」を追加

これでターミナルの設定は完了です。

Gitのインストール

Gitのインストール時には+bash_completionを追加するようにしましょう。コード補完に必要なファイルも一緒に用意してくれます。

sudo port install git-core +bash_completion

これも私の環境で10分以上かかるのでのんびり待ちます。じょんのびね。

git-prompt.shを詠込む設定を追加する

この答えにたどり着くのにMacPortsを3回も入れ直したのですが、やり方から書いてしまいます。

/opt/local/share/git-core/git-prompt.shをホームディレクトリにコピーして、.bash_profileで詠込みます。

$ sudo cp /opt/local/share/git-core/git-prompt.sh $HOME/.git-prompt.sh

.bash_profileに以下を追加

source ~/.git-prompt.sh
PS1='[\[\e[1;32m\]\u@\h \[\e[1;36m\]\w\[\e[1;35m\]$(__git_ps1 " (%s)")\[\e[0m\]]\$ '

PS1はターミナルの左側に表示されるユーザ名やパスの表示を設定する部分です。
「[\[\e[1;32m\]」をいじると色が変えられたりします。

こちらがとても参考になりました。
bashrcの設定でコマンドプロンプトの色をかえたりあれこれするメモ:なんとなしの日記

これで最後にsource .bash_profileを行うか、ターミナルを再起動させるとGitのコード補完、ブランチ名の表示ができているはずです。

Gitとプロンプト変数PS1とbash_completionと – kanonjiの日記こちらのサイトが本当に参考になったのですが、唯一この部分が違ったために解決まで長い道のりとなってしまいました。

でも詳しく書いていただいていたおかげで、macもbashですらもほとんど理解していない私でもなんとかここまで来れました。ありがとうございます。

私の試したバージョン(Git 1.8.0)では、gitのbash-complationは/opt/local/share/bash-complation/complations/gitにあり、さらにこのファイルをみるとgit_ps1の定義がなかったんですよね。その代わり、git-completion.shを使う方法が書いてあったのでその通りにしたらうまくいきました。

ものすごい遠回りをしましたがそのおかげで、色々と理解は深まったので無駄ではないと思います。
慣れない環境にこれからもたくさん躓くことがあると思いますが、今日の成功体験を思い出して解決していきたいと思います。

うまくいかなきゃ消せばいい

Windowsの場合は、アプリケーションをフォルダごと削除するのは御法度のイメージですが、macの場合はlinuxベースなのでWindowsほどには問題にならなそう?な感じです。
たとえばMacPortsでインストールしたものはほとんど*[1] が/opt/local/にインストールされます。

$ sudo port -f uninstall installed

で、MacPortsからインストールしたものを一括で削除して、あとは/opt/localを削除してしまえばまっさらの状態に戻すことができます。

これさえわかれば何度でもやり直すことができるので、怖くないですね(笑)

  1. たまに例外があるそうなので、かならず文中のMacWikiのMacPorts再インストールのセクションを確認してください []

シェアする

  • このエントリーをはてなブックマークに追加

フォローする