Git便利設定メモ

Gitをいろいろ触るようになってきたので、便利設定を一旦まとめるめも。
こちらGitを使い始めたらやっておきたい便利な設定いろいろ - アシアルブログとかこちらMacのターミナルでGitのブランチ名を表示する - アインシュタインの電話番号とかこちらGitコマンドをタブキーで補完できるようにする | mawatari.jpとかこちらbashでgitの現在のbranch名を表示させる | Into my webを参考に設定。

色付け

gitコマンドの出力を色づけて見やすく。

$ git config --global color.ui auto

こんな感じ。

Gitコマンドのalias設定

よく使うもの/便利なものをalias登録しておく。便利。

$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.st status
$ git config --global alias.br branch
$ git config --global alias.hist 'log --pretty=format:"%h %ad | %s%d [%an]" --graph --date=short'
$ git config --global alias.sb show-branch

「git hist」は参考先にあったツリー表示ログのalias。いい感じ。

Git設定の確認

~/.gitconfigに設定が記述されている。こっちを直接編集してもよい。

[color]
    ui = auto
[alias]
    co = checkout
    ci = commit
    st = status
    br = branch
    hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short
    sb = show-branch

Gitコマンドを補完できるように設定。

ここから先はbashの話。

「git-completion.bash」を使いましょう。このファイル自体はインストールした時点で既にあるようです。パスは以下の通り。

  • CentOSyumでGitをインストールした場合
    • /usr/share/doc/git-1.7.1/contrib/completion/git-completion.bash
  • MacにhomebrewでGitをインストールした場合
    • /usr/local/Cellar/git/1.7.4.2/etc/bash_completion.d/git-completion.bash

これを例えば~/.bashrcとかに読み込むように記述する。

source "/usr/share/doc/git-1.7.1/contrib/completion/git-completion.bash"

★★2013/1/10 追記ここから★★
上記のgit-completion.bashを指定する方法だと、gitのバージョンを上げる度に設定しなおす必要がありそう。
(現にMacでgitをupgradeしてみたら/usr/local/Cellar/git/配下に1.7.xと1.8.xができている)

どうしたもんかね。こりゃ(´・ω・`)
★★2013/1/10 追記ここまで★★

Gitの現在branch名を表示させる

Git管理配下のディレクトリに入ると、現在どのbranchで作業してるかが表示されます。すごく便利。
~/.bashrcとかに以下を記述。

PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '

この設定でこんな表示になりました。

git push origin masterしたら403エラー出た時の対処

Githubリポジトリ作ってpushしてみたら403エラーが返ってきてしまった時の対処。
具体的には以下な感じ。

$ git push -u origin master
error: The requested URL returned error: 403 while accessing https://github.com/jinkojima/hogehoge.git/info/refs

fatal: HTTP request failed

こちらhttp://www.plus-p.org/Special_Blog?cmd=post&id=27を参考に設定。
ローカルリポジトリ内の.git/configを以下のように記述する。

[remote "origin"]
    url = ssh://git@github.com/jinkojima/hogehoge.git
※  url = https://github.com/jinkojima/hogehoge.git となってた

GrailsのProxy設定

こっちProxy環境下でGradlewを動かす時の設定 - MofuMofuFarmでゴニョゴニョしてるときに教えてもらった設定。

こちらhttp://grails.org/doc/latest/ref/Command%20Line/add-proxy.htmlとこちらhttp://grails.org/doc/latest/ref/Command%20Line/set-proxy.htmlを参考に。
※というかもう書いてあるそのままなんだけれども

概要としては以下の通り

  • Proxy設定を add-proxy command で定義しておく
  • 定義したProxy設定を set-proxy command でアクティベートする
# Proxy設定を定義
$ grails add-proxy [name]
       --host=proxy-server 
       --port=xxxx 
       --username=hogename * 
       --password=hogepass *
# 定義したProxy設定をアクティベート
$ grails set-proxy [configuration]
  • configuration - Proxy設定の名前。add-proxyの[name]で設定した名称をここに。

設定はどこにあるの?

grails add-proxy 実行後に表示されます。
参考までに自分の環境では(GVMでGrailsを管理)以下の通り。

 Added proxy hogeclient to ~/.grails/ProxySettings.groovy

~/.grails/ProxySettings.groovyの中身を見てみるとadd-proxyで追加した設定と、現在どれをsetしているか(=currentProxy)が記述されてるようです。

$ cat ProxySettings.groovy 

mofuclient=['http.proxyHost':'proxy.mofumofu.com', 'http.proxyPort':'xxxx', 'http.proxyUser':'', 'http.proxyPassword':'', 'http.nonProxyHosts':'']
currentProxy='client'
hogeclient=['http.proxyHost':'proxy.hogehoge.co.jp', 'http.proxyPort':'yyyy', 'http.proxyUser':'', 'http.proxyPassword':'', 'http.nonProxyHosts':'']

Proxy環境下でGradlewを動かす時の設定

会社(=Proxy環境下)からGradlewを使ってみたら、以下のようなエラーが出たのでいろいろ設定しましたよメモ。

$ ./gradlew -Ddisable.groovydocs=true -Dgrails.home=hogehoge clean publishGuide_ja
Downloading http://services.gradle.org/distributions/gradle-1.0-bin.zip

Exception in thread "main" java.net.UnknownHostException: services.gradle.org
	at (以下略)

こちらGradleでプロキシーの設定ってどうやるの? - みちしるべとこちらプロキシ経由でGrapeを使う方法 - 豆無日記を参考に設定。…そうですか3年前に通過した地点でしたか。

$JAVA_OPTSにProxy設定を記述する。

環境変数JAVA_OPTSにProxy設定を記述する。「そもそもJAVA_OPTSってなんぞ」と思って調べてみたら、こちらIBM WebSphere Application Server Community Edition Documentation : JAVA_OPTSによるとJVMに追加オプションを渡せる環境変数らしい。
具体的には以下の通りに記述。

export JAVA_OPTS="-DproxyHost=proxy.hogehoge.com -DproxyPort=xxxx"

この設定で無事Gradlewれました。えがったえがった。

Mac環境を再構築する時に確認する諸々設定めも

2012年末〜2013年始にかけていろいろとMac環境を整頓したので、そのメモ。

Finder上部にパスを表示する。

こんな感じに今どこにいるかが分かって結構便利。

$ defaults write com.apple.finder _FXShowPosixPathInTitle -bool YES
$ killall Finder

※解除したいとき
$ defaults write com.apple.finder _FXShowPosixPathInTitle -bool NO
$ killall Finder

ダッシュボードの無効化

使わないので消す。

$ defaults write com.apple.dashboard mcx-disabled -boolean YES
$ killall Dock

※解除したいとき
$ defaults write com.apple.dashboard mcx-disabled -boolean NO
$ killall Dock

アプリ隠しをDock上で半透明で表現

隠した時に半透明になるので素敵。
こんな感じ。

$ defaults write com.apple.Dock showhidden -bool YES
$ killall Dock

※解除
$ defaults write com.apple.Dock showhidden -bool NO
$ killall Dock

常時64bitモードで起動する。

その名の通り。

$ sudo systemsetup -setkernelbootarchitecture x86_64

※解除
$ sudo systemsetup -setkernelbootarchitecture i386

スタックでマウスオーバー時にハイライト表示させる

Dockにスタックを作成しリスト表示させてるときに便利。
こんな感じ。

$ defaults write com.apple.dock mouse-over-hilite-stack -boolean YES
$ killall Dock

※解除
$ defaults write com.apple.dock mouse-over-hilite-stack -boolean NO
$ killall Dock

「Recent Applications」表示

最近つかったアプリケーションをDockにスタック表示させる。便利。
こんな感じ。

$ defaults write com.apple.dock persistent-others -array-add '{ "tile-data" = { "list-type" = 1; }; "tile-type" = "recents-tile"; }'
$ killall Dock

※解除
Dock上からぽいっと。

「隠す」なDockが表示されるまでの間をなくす & 表示アニメーションのきびきび化

デフォルトだと隠れているDockにカーソルを合わせても、表示されるまでちょっと間があってもっさり感が否めません。さくっと表示します。

$ defaults write com.apple.Dock autohide-delay -float 0
$ killall Dock

※解除
$ defaults delete com.apple.Dock autohide-delay
$ killall Dock

さらに表示アニメーションについても設定が可能。

※アニメなし
$ defaults write com.apple.dock autohide-time-modifier -int 0
$ killall Dock

※アニメありのきびきび
$ defaults write com.apple.dock autohide-time-modifier -float 0.12(★お好みで)
$ killall Dock

※デフォに戻す
$ defaults delete com.apple.dock autohide-time-modifier
$ killall Dock

ネットワーク接続時に.DS_Store ファイルの作成を抑制する

リモートファイルサーバ接続時に.DS_Storeファイルを作らないようになる。ただしFinder動作で一部弊害もある模様。詳細(の一例)はこちらMac OS X: リモートボリュームの「情報を見る」のコメントは表示されないことがあります

$ defaults write com.apple.desktopservices DSDontWriteNetworkStores YES

※解除
$ defaults write com.apple.desktopservices DSDontWriteNetworkStores NO

Time Machineがいつまで待っても終わらない時に試してみよう

Time Machineがいつまでたってもバックアップ完了してくれない状態で年越ししました。
調べてみた結果を試してみたらいい感じに解決してくれたのでめも。

こちらMac miniにしてTimeMachineが終わらない病になった。: 開発系いろいろメモ -- ahiru studio --を参考に以下手順を。

  1. ~/Library/Preferences/ 配下の".plist"".plist.lockfile"ファイルを削除
  2. Spotlightのインデックスを再構築

".plist"ファイルはプロパティリストのことらしい。詳細はこちらプロパティリスト - Wikipedia
各サービスやらアプリやらのユーザ設定が保存されてたりするみたい。

Spotlightのインデックスを再構築するのは、具体的には以下の手順で。

  • システム環境設定のSpotlightの「プライバシー」タブを選択。
  • 「Spotlightの検索から除外する場所」に「+」で一度ディスク全体を指定
  • 「−」で削除する。

状況によってSpotlightインデックス再構築までは必要ないかも。実際、我が家の2環境で片方は".plist"ファイル削除だけでTime Machine元気になりました。

GVM by gvmtoolをMacに導入

MacOSX Mountain LionにGVMを導入したときのメモ。
詳細はこちらGVM: Groovy enVironment Manager - uehaj's blog

GVMとはなんぞや

こちらによると、Groovy関連のSDKを複数バージョン入れて管理できる素敵なもの、です。GVM is a tool for managing parallel Versions of multiple Software Development Kits on most Unix based systems. で、GVM was inspired by the highly useful RVM and rbenv tools, used at large by the Ruby community.なんだそうな。

具体的には

  1. Groovy
  2. Grails
  3. Griffon
  4. Gradle
  5. vert.x

なんかが対象のようです。

さらにはbashベースで動くので、OSも特に問わなかったりして素敵です。(実際、会社Win7PCにも導入しましたが、ほぼやったことは同じ)

インストール

適当なbash Terminalを開いて以下コマンドを叩きます。

$ curl -s get.gvmtool.net | bash

"-s"は(manによると)Silent or quiet mode. Don't show progress meter or error messages. なのでお好みで。

はまったのはJAVA_HOMEを設定していない→エラー、の流れがしばらく気づけなかったくらい?
参考までにJAVA_HOMEがないと、

Looking for a previous installation of GVM...
Looking for JAVA_HOME...
Not found.

とか教えてくれます。

インストールが終わると

Please open a new terminal, or run the following in the existing one:

    source "~/.gvm/bin/gvm-init.sh"

と教えてくれるので実行しましょう。

ちなみに.bashrcとか.bash_proflieには以下が追加されてて、毎回実行してくれます。してくれるはずです。

#THIS MUST BE AT THE END OF THE FILE FOR GVM TO WORK!!!
[[ -s "★HOME★/.gvm/bin/gvm-init.sh" && ! $(which gvm-init.sh) ]] && source "★HOME★/.gvm/bin/gvm-init.sh"

お疲れ様でした。enjoy!