blog

紫陽花

Emacs Magit使い方

Emacs の拡張パッケージ Magitを紹介します。

Magitってなに?

MagitとはテキストエディタEmacsの機能を拡張するパッケージの一つです。
Emacs上でGitの操作を行うことができるようになります。

github.com

f:id:Yamakichi:20160629124452p:plain

こんな感じにEmacs上でGitログを追えたりもします。



どうやって入れるの?

入れ方は簡単です。

今回は以下の環境で紹介します。
MacOSX
Emacs 24.5
・パッケージ管理 Cask

Caskファイルに以下を書き込みます。

(depends-on "magit")

そしてインストールを

cask install

これで入りました。



どうやって使える設定にするの?

installされていればGitがつかわれているディレクトリで M-x magit-status を入力するとMagitのバッファが展開されます。
毎回 magit-status を入力すると面倒なのでinit.elでコマンドを設定しておきます。


init.el

;; Magit
(setq-default magit-auto-revert-mode nil)
(setq vc-handled-backends '())
(eval-after-load "vc" '(remove-hook 'find-file-hooks 'vc-find-file-hook))
(bind-key "C-x m" 'magit-status)
(bind-key "C-c l" 'magit-blame)

(custom-set-faces
 '(magit-diff-added ((t (:background "black" :foreground "green"))))
 '(magit-diff-added-highlight ((t (:background "white" :foreground "green"))))
 '(magit-diff-removed ((t (:background "black" :foreground "blue"))))
 '(magit-diff-removed-hightlight ((t (:background "white" :foreground "blue"))))
 '(magit-hash ((t (:foreground "red"))))
)

これで "C-x m" をするだけで magit-status と同じになります。快適ですね
コマンドの設定は個人の好みに合わせて調整してください。
また、Magitの設定の下に custom-set-faces でmagit関連の設定を書いていますが、これはMagitを使いやすくするための色分けです。
こちらも個人の好みに合わせて調整してください。


custom-set-facesはこちらを参考にさせていただきました。
xoyip.hatenablog.com

"C-x m" で以下のバッファが展開されます。
f:id:Yamakichi:20160629130917p:plain




どうやってMagitを使うの (使い方)

Magitの使い方を紹介していこうと思います。
ネットを探してもあまり日本語での使い方の文献が見当たらないので、これから紹介するのyamakichi独自の視点での使い方です。
何か不足な点などあったらコメントしていただけると幸いです。

Git が使えるディレクトリに移動して Emacsを起動します。
ファイル編集画面を開き、先ほど設定した "C-x m" でmagit-status バッファーを展開します。


f:id:Yamakichi:20160629130917p:plain

これから紹介するコマンドはmagit-status上で実行する必要があるので注意してください。
一度ソースコードの編集バッファに移った場合はmagit関連のバッファに戻るか、C-x gでmagit-statusを呼び出す必要があります。

bキーを押すとブランチ操作を行うバッファが開きます。

f:id:Yamakichi:20160629131745p:plain

さらにbキーを押すと Checkout を行うことができます。

f:id:Yamakichi:20160629132340p:plain

bキーを押した後にnキーを押すと、branchを新しく作ることができます。

主な操作はブランチ操作バッファーの Actions を参考にしてみてください。

f:id:Yamakichi:20160629132548p:plain

yキーを押すとブランチの一覧を表示できます。
旧バージョンでは bキー の後 vキー で表示だったようですが、最新のものでは statusバッファで yキー に変わっています。

f:id:Yamakichi:20160629133129p:plain



変更をコミットしてpush してみる

hoge メソッドを追加します
f:id:Yamakichi:20160702163530p:plain


変更ファイルがあると statusバッファでは Unstaged changes と表示されます。
これは変更が加えられたファイルがまだステージングに上がってないよという意味です。
commitするためにはファイルをステージングにあげないといけません。
では、ステージングにあげましょう。
modified と表示されているところにカーソルを持って行き sキー をを押すとステージングにファイルが上がります。

f:id:Yamakichi:20160702164034p:plain

Staged と表示されていればOKです。

ステージングにあげた後 cキー を押すとcommitバッファが表示されます。
さらに cキー を押すとコミットログの編集画面が開きます。

f:id:Yamakichi:20160702164618p:plain


コミットログを書きましょう。
書いたら C-c C-c と押すとコミットされます。

statusバッファで lキー を二回押してコミットされているか確認してみましょう。

f:id:Yamakichi:20160702165414p:plain


practiceが最新のコミットになってますね。これでコミットできました。

次にこのmasterブランチをリモートのorigin/masterにプッシュしてみます。

statusバッファで Pキーを押すと Pushバッファが開きます。

f:id:Yamakichi:20160702165755p:plain


Push先を選んだりもできますが、今回は origin/master ブランチなので pキー を押してpushします。

f:id:Yamakichi:20160702165920p:plain


GitHubの方でPushされたことが確認できました。



使ってみて

実際にMagitを導入して1ヶ月ほど経つのですがすごく便利です。
Emacsで開発を行いGitでバージョンを管理したい人は絶対に入れて使うことをお勧めします!
Magitに関する日本語の情報はあるのですが、最新のものがなかったので今回このブログで紹介しました。
マージ、プル、リバートなどは以下の参考をみてチャレンジしてくださいw 
以下の参考ページを作成してくださった方々ありがとうございました。