Skip to content

Instantly share code, notes, and snippets.

@masm11
Last active May 26, 2019 09:11
Show Gist options
  • Save masm11/9c02966a9b0afa9920286ebe7e28807e to your computer and use it in GitHub Desktop.
Save masm11/9c02966a9b0afa9920286ebe7e28807e to your computer and use it in GitHub Desktop.

Magit

概要

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

私は 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 %

stage

magit のバッファで g と入力すると、バッファの内容が更新される。

Unstage changes (1)
modified  dump.c

modified dump.c の行で s と入力すると、stage される。

Staged changes (1)
modified  dump.c

commit

Staged changes (1)
modified  dump.c

Staged changes 行で cc と入力すると、commit メッセージを入力するバッファが開く。 入力して C-c C-c で commit できる。

commit 前の差分表示

Staged changes (1)
modified  dump.c

Staged changes 行で dd を押と、stage された差分が表示される。

commit する前に確認すると良い。

ここで、まだ commit したくない変更があれば、u と入力すれば hunk ごとに unstage できる。

hunk とは、@@@@@@ のひと塊のこと。

ちなみに、magit バッファで Unstaged changesdd すると、まだ stage されていない差分が表示され、そこでも s と入力することで hunk ごとに stage できる。

このように、一つのファイルに stage されている変更とされていない変更がある場合は、Unstaged changesStaged changes の両方にファイル名が表示される。

さらに、stage した状態から更に修正をした場合、magit バッファの Unstaged changes に表示されるので、そこで s を押せば、その差分も stage される。

なかなか柔軟で便利。Magit を使うとこの辺りの操作が簡単。

log

magit バッファで ll と入力すると commit log が表示される。

グラフ付き。

各行で Enter を押せば、commit の詳細が表示される。

merge

私は merge そのものはコマンドラインでやっている。

git merge some-other-branch

しかし、conflict の解消は Magit でやっている。

magit バッファに unmerged と書いてあるファイルがあり、その行で Enter を入力すると、 ファイルが開く。修正して保存し、magit バッファを g で更新すると、もう unmerged ではなくなっている。

conflict を全て解消したら commit する。

push

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 に対してこの操作をすると、ファイルが消える。 ファイル名の後ろに ~ が付いたファイルを消す時に重宝する。

help

magit バッファで ? を入力すると、操作一覧がバッファに表示される。 また、操作の1文字めを入力すると、次にできる操作が表示される。

滅多に使わない操作は、この一覧からカーソルキーで選択して Enter を押せば良い。

tramp 対応

Magit は Tramp に対応している。なかなか便利。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment