EmacsのGitクライアント：Magit

これは[Gitアドベントカレンダー](http://qiita.com/advent-calendar/git)の17日目のエントリーです。

このエントリーではEmacsのGitクライアントであるMagitの紹介を行います。ひよっこプログラマのエントリなので間違いがあれば指摘して下さい。逆に、ひよっこプログラマだからこそ出来る、これを見たら初心者でも出来るようなエントリを目指しました。

##Magitって何？
EmacsのGitクライアントです。Emacsでコード編集して、ターミナルに移動せずそのままEmacs上でGitの操作を行うことが出来ます。

##インストール方法
ソースはgithubで公開されています。
https://github.com/magit/magit
インストールします。	

```bash
    $ cd
    $ mkdir tmp
    $ cd tmp
    $ git clone git@github.com:magit/magit.git
    $ cd magit
    $ ./configure
    $ make
    $ sudo make install
```

で、.emacs.d/init.elに次の記述を追加します。

```el
    (require 'magit)
```

これだけ！

##チュートリアル
とりあえずgit管理下のファイルを開いている状態で、 `git status`に対応する`M-x magit-status`してみましょう。すると

    Remote:   master @ origin (git@github.com:takc923/dotfiles.git)
    Local:    master ~/dotfiles/
    Head:     88b780e modified init.el and elscreen.el for emacs24

    Changes:                                                                                                                              
        Modified   .emacs.d/init.el
こんな画面が現れます。カーソルを`Modified   .emacs.d/init.el`の行に移動し、Tabキーを押すと

    Local:    master ~/dotfiles/
    Head:     88b780e modified init.el and elscreen.el for emacs24

    Changes:
        Modified   .emacs.d/init.el
    diff --git a/.emacs.d/init.el b/.emacs.d/init.el
    index b0db796..103a40f 100644
    --- a/.emacs.d/init.el                                                                                                               
    +++ b/.emacs.d/init.el                                                                                                               
    @@ -1,5 +1,6 @@
     ;; .emacs                                                                                                                           
                                                                                                                                     
    +                                                                                                                                    
     ; path                                                                                                                              
     (setq load-path (cons "~/.emacs.d/site-lisp" load-path))  

diffが見れます。変更が正しいことを確認したら、ファイルの行で`s`を押します。

    Remote:   master @ origin (git@github.com:takc923/dotfiles.git)
    Local:    master ~/dotfiles/
    Head:     88b780e modified init.el and elscreen.el for emacs24

    Staged changes:
        Modified   .emacs.d/init.el

Stageされました(`git add .emacs.d/init.el`と同じ効果)。今は`Changes`なファイルが1つですが、複数ある時は`S`で全てStage出来ます。

次に`c`を押すと、新しくwindowが現れます。ここでcommitコメントを書いて`C-c C-c`を入力するとcommit出来ます。

    Remote:   master @ origin (git@github.com:takc923/dotfiles.git)
    Local:    master ~/dotfiles/
    Head:     dd0f21c test

    Unpushed commits:
    dd0f21c * test

commit出来ました。次に`git pull`を行います。`git pull`するにはgit-status画面で`F`を入力します。すると

    Switches
    -r: Rebase (--rebase)
    Actions
    F: Pull
という画面が現れます。`git pull --rebase`するなら`-r`と入力します。すると`--rebase`の色が変わるので、その後`F`を押すとpull出来ます。pullする前にもう一度`-r`を入力すると`--rebase`の色が戻り普通のpullが出来ます。
すると、パスフレーズが聞かれるので入力します。

    Password for '/home/takc923/.ssh/id_rsa': ……………

pullが完了しました。
次にpushします。pushするにはmagit-status画面で`P`を押します。すると

    Switches
     -f: Force (--force)      -d: Dry run (-n)         -u: Set upstream (-u)
    Actions
    P: Push         t: Push tags

という画面が現れます。ここもpull同様、オプションをつけるなら`-f`,`-d`,`-u`してから`P`を入力します。やっぱりパスフレーズを聞かれるので入力するとpush出来ます。

チュートリアルは以上です。

##終わりに
magitのインストール方法と、簡単な使い方だけ紹介しました。これから使う人の入り口になれば幸いです。もちろんmagitでは他にも色んな操作が可能です。ここから先は以下の参考ページや、magitでぐぐって出てきたエントリを参考に使ってみてください。
参考
http://magit.github.com/magit/magit.html