Git 勉強会に行ってきたよ

会では全然Git の話とかしてなかった気もしましすが,
なんか名指しされたので Git 関連の今の自分の設定的な話を
一回まとめて晒しておこうかな.と思います.
最初に設定するような人は参考にしてもいいかもしれません.

自分は ZshEmacs 派なので,Git 関連は以下を使っています.

.gitconfig の alias

Git はデフォルトだと短いサブコマンドが使えません.
そこでSubversion でも使っていた感じで使えるよう適当にalias しています.

# $HOME/.gitconfig
[alias]
        st = status
        ci = commit
        co = checkout
        br = branch
	dif = diff

diff は,di だと ci を打ち間違えそうだし,df だと
イメージとして df コマンドが思い浮かぶので,dif と
あまり短くない感じになっています.
この辺は好みで.

Zsh の補完機能

Zsh は補完機能が豊富なので,とりあえず compinit だけでも使えます.

#!/usr/bin/env zsh
# .zshrc の設定

# 補完設定
autoload -Uz compinit; compinit

# 自前で用意した関数用の設定
typeset -U fpath
fpath=(~/.zfunctions/Completion ${fpath})

自分の場合は,最近 git submodules を覚えたので,
それ補完してくれる設定を使っています.
それについては d:id:clairvy:20100909:1283982598 を参照のこと.
で,良いのを見付けたので,http://gist.github.com/591626
使おうと思っています.これを.zshrc からロードするようにすればOK.

$HOME/.zfunctions/Completion/_git
ファイルを置いています.

vcs_info - プロンプトに branch 名を表示

トピックブランチを切るようになると,ブランチをコロコロ切り替えるので,
現在の居るブランチを知りたいと思うようになります.
git br で毎回調べるのもいいですが,
Zsh ならプロンプトに出しておくのもいいでしょう.

#!/usr/bin/env zsh

# プロンプト用
setopt prompt_subst
autoload -U colors; colors

if [[ $ZSH_VERSION == 4.3.* ]]; then # 今だとあまり無いけど,一応古いもの対策
  autoload -Uz vcs_info
  zstyle ':vcs_info:*' formats '(%s)-[%b]'
  zstyle ':vcs_info:*' actionformats '(%s)-[%b|%a]'
  precmd () {
    psvar=()
    LANG=en_US.UTF-8 vcs_info
    [[ -n "$vcs_info_msg_0_" ]] && psvar[1]="$vcs_info_msg_0_"
  }
fi

参考

  • man zshcontrib

以前,一つ前のブランチに戻りたいという要望を見た気がするので,
cd - 的な git co - 的な機能もあってもいいかなー.と
今妄想中だったりします.
と思って検索したらあったので設定しました.

これは,submodule の設定も含んでいるので,.zshrc からロードしています.

参考

Egg

EmacsEgg.el を使っています.
コマンドラインで Chunk を扱うコマンドは全然覚えてませんが,
一部をstaging したり,undo するときには結構便利に使っています.

;;; git(egg)
(setq egg-git-command "/opt/local/bin/git") ; MacPorts 版の git を使う
(setq load-path (cons (concat home "/.emacs.d/egg") ; egg へのパス
                      load-path))
(require 'egg)

上記設定で,M-x egg-status で差分が出るので,
その変更に対して,staging したりコミットしたりできます.

C-x v b でブランチ作成とか,C-x v ~ でチェックアウトとかできるけど,
自分はコマンドラインで確認しながらやることが多いです.

gisty

gist を使うときには,コマンドラインで gisty というコマンドを使っています.

これを使ってpost してから,更に変更を加えて,
というパターンが多いです.

gisty も補完してくれるよう設定してあります.

が $HOME/.zfunctions/Completion/_gisty に置いてあります.

参考