Magit を使っていて、なかなか快適なので、 今更かと思いつつ、私の使い方をまとめてみる。
M-x package-list-packages
で magit が出てくるので、そこからインストールする。
私は ~/.emacs
に以下のように設定してある。
-
custom-set-variables
で'(magit-log-section-commit-count 0)
-
その他
(defalias 'magit 'magit-status)
後者の設定は、M-x magit-status
が面倒だったので
代わりに M-x magit
で使えるようにするもの。
info の Getting Started に書いてあるように、
(global-set-key "\C-xg" 'magit-status)
としておくのが良いかも。
M-x magit
。
-
カレントディレクトリが git 管理下の場合、そこが参照される。
-
カレントディレクトリが git 管理下でない場合、どこを参照するか尋ねられる。
-
C-u M-x magit
で、別のディレクトリを指定することもできる。
私は clone はコマンドラインで git clone
で行っている。
luna:/tmp % git clone https://github.com/masm11/dump
Cloning into 'dump'...
remote: Counting objects: 9, done.
remote: Total 9 (delta 0), reused 0 (delta 0), pack-reused 9
Unpacking objects: 100% (9/9), done.
luna:/tmp %
magit のバッファで g
と入力すると、バッファの内容が更新される。
Unstage changes (1)
modified dump.c
modified dump.c
の行で s
と入力すると、stage される。
Staged changes (1)
modified dump.c
Staged changes (1)
modified dump.c
Staged changes
行で cc
と入力すると、commit メッセージを入力するバッファが開く。
入力して C-c C-c
で commit できる。
Staged changes (1)
modified dump.c
Staged changes
行で dd
を押と、stage された差分が表示される。
commit する前に確認すると良い。
ここで、まだ commit したくない変更があれば、u
と入力すれば hunk ごとに unstage できる。
hunk とは、@@@
〜 @@@
のひと塊のこと。
ちなみに、magit バッファで Unstaged changes
で dd
すると、まだ stage されていない差分が表示され、そこでも s
と入力することで hunk ごとに stage できる。
このように、一つのファイルに stage されている変更とされていない変更がある場合は、Unstaged changes
と Staged changes
の両方にファイル名が表示される。
さらに、stage した状態から更に修正をした場合、magit バッファの Unstaged changes
に表示されるので、そこで s
を押せば、その差分も stage される。
なかなか柔軟で便利。Magit を使うとこの辺りの操作が簡単。
magit バッファで ll
と入力すると commit log が表示される。
グラフ付き。
各行で Enter を押せば、commit の詳細が表示される。
私は merge そのものはコマンドラインでやっている。
git merge some-other-branch
しかし、conflict の解消は Magit でやっている。
magit バッファに unmerged と書いてあるファイルがあり、その行で Enter を入力すると、
ファイルが開く。修正して保存し、magit バッファを g
で更新すると、もう unmerged ではなくなっている。
conflict を全て解消したら commit する。
remote の設定は git remote
コマンドでやっている。
push するには magit バッファで Pu
と入力する。
まだそのブランチを push したことがない場合、push 先ブランチを尋ねてくるので、
入力する。この時、補完ができる。手元のブランチが 123-something
だとして、
そのブランチが origin になくても、origin/123-
くらいまで入力すれば origin/123-something
と補完してくれる。
そのブランチの push が2回め以降の場合は、Pu
で1回めと同じところに push される。
push 先として2箇所をよく使うなら、2箇所目は Pp
が使える。
Pu
の場合と同様に操作できる。
時々3箇所めを使う場合、Pe
が使えそうではあるが、使ったことがないので省略。
編集を取り消して、リポジトリにある状態に戻したいことが、時々ある。
Unstaged changes
で該当ファイルで k
と入力すると、本当にいいか尋ねられるので、
y
と答えると、編集前の状態に戻る。
なお、untracked files
に対してこの操作をすると、ファイルが消える。
ファイル名の後ろに ~
が付いたファイルを消す時に重宝する。
magit バッファで ?
を入力すると、操作一覧がバッファに表示される。
また、操作の1文字めを入力すると、次にできる操作が表示される。
滅多に使わない操作は、この一覧からカーソルキーで選択して Enter を押せば良い。
Magit は Tramp に対応している。なかなか便利。