Skip to content

Instantly share code, notes, and snippets.

@ikedaisuke
Last active November 19, 2015 02:08
Show Gist options
  • Save ikedaisuke/5f6f7703a0c9ae017574 to your computer and use it in GitHub Desktop.
Save ikedaisuke/5f6f7703a0c9ae017574 to your computer and use it in GitHub Desktop.
Emacs の git クライアント magit の個人的なまとめ

Emacs の git クライアント magit の個人的なまとめです。正確かどうかは保証しません。

こんな cheat sheet を参照するくらいなら magit の公式ドキュメント読んだほうがいいと思う。

Magit!

バージョン

git
git version 2.6.3
magit
magit 20151114.1619 installed A Git porcelain inside Emacs

magit は melpa で入れた

magit は最新の stable な git を仮定する、かつ、その他の emacs の git を扱うモードとコンフリクトすることがあるので、気をつけるように。

magit 自身も最新でないと動かないので melpa で (emacs で M-x package-list-packages)

u

からの

x

で upgrade しておくこと。emacs は restart 。

ローカルの作業

必ず使うもの

show status

(magit-status)

あまりにも使うので prefix key を割り当てている

magit のマニュアルでも割当を推奨している

status バッファを close

q

show defference

TAB で toggle

staging

s

もし staging したものがなかったら "全部 stage しますか(y/n) と聞かれるが、nが無難

unstage

u

commit

c

commitなどを行うメニューバッファが出るので、それに従う。今のところ、さらに c らしい。

部分的に commit するにはまず Tab して、変更点を選び c

個人的には magit を使う最大の理由がこれ。

commit messages の英語の書式テンプレートは、この文章の終わりで触れる。

commit message を書き終えたら、 C-c C-c する。

commit message を書くのをキャンセルしたいときは C-c C-k

push

p

history

l

show history などを行うメニューバッファが出るので、それに従う。今のところ、さらに l らしい。

commit --amend

直前のコミットメッセージの typo をしたいとき。

unpushed commit を選ぶ。

c して commit モードにする。

a して amend

バッファが出るのでコミットメッセージを書き直す。

これをよく忘れるので、書きたかった。

rebase

unstaged な変更が残っていたときは git rebase できない。

まず commit するか、あるいは、一時的に git stash する

r

r

rebase + interactive

r

i

commit 行を status window で選択 (C-Space で複数行選択可)

C-k commit を削除

r, w

reward コミットメッセージの編集

C-c C-c すると、編集モードになるので、編集する。 C-c C-k で abort

squash

s

git rebase + squash の基本だが、squash する commit は、「先頭を残して」2 番目以降の squash したいコミットを選択する。さもないと、

Cannot 'squash' without a previous commit

と、叱られる。

rebase + squash

r

f

stash

stash は緊急避難的な意味合いを持つらしく、あまり勧められない。 しかし、magit-status で表示されるので、どうするかは後で決められる。

z

branching

b

c で作る。どのブランチから分かれるかを最初に聞かれるのでタイプ (デフォルトは master) 次に、branch name を入れる。

branch name べからず集

checkout

b

b

TAB による branch name 補完が効くので、積極的に使う。

merge

m

m

マージ

e

マージ時の commit name の編集

cherry picking

A

A cherry-pick a commit

reseting

x

参考にしたもの

commit log をどう書くか

たとえば fix について fixed と書くのか fix と書くのか fixing と書くのか Fix と書くのか FIX と書くのか、 そもそもプロジェクトで統一するのか統一しないのか、という議論がある。

そんなのは個人的にはどうでもよくて、コミッターに意味が通じること、かつ、短ければ短いほど良い。 長いコミットログを書いて C-c C-c すると magit に怒られます。

git そのものや Linux kernel のコミットログを見ればいいんじゃね?という意見があって、なるほどねと思いました。

このあたりでも揺れてる。

markdown を pandoc で編集

Github Markdown CSS - for Markdown Editor Preview にある github.css を使う

% pandoc -s input.md -t html5 -c github.css -o output.html

参考にしたもの

おまけ

GitHub の Web editor を使わずに、 pandoc を使って Gist の markdown を push する前に手元でHTMLにする

  1. gist を作るときに、ファイル名を filename.md にする(先頭のタイトルではなく、二つ目のファイル名のテキストフィールド)
  2. gist を手元に clone

filename は空白を含まないように。

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