クラなんとか or くらなんとか or cla なんとかの日記

2010-09-22

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 に置いてあります.

参考