#author("2019-02-05T15:40:30+00:00","","") #topicpath /////////////////////////////////////////////////////////////////////////////// * 目次 [#o9fa6d61] #contents(); /////////////////////////////////////////////////////////////////////////////// * magit [#ycbd3850] - [[emacs>Editor/emacsen]] 上で動作する、[[git>VersionCtl/Git]] フロントエンド //============================================================================= ** 導入方法 [#installing] - Linux の場合、ディストリビューションによっては用意されている場合もある -- debian の場合、 magit パッケージを aptitude install すると、即使えるようになる。 - リポジトリ: https://github.com/magit/magit.git - 最近のバージョンでは dash.el を必要とする。導入済みでない場合は用意しておく必要がある。 -- dash.el のリポジトリ: https://github.com/magnars/dash.el -- with-editor のリポジトリ: https://github.com/magit/with-editor.git - ${HOME}/.emacs.d/site-lisp/ 配下に手動インストールした場合の設定例。magit と dash に load-path も通す必要がある。 ; magit (setq load-path (cons (expand-file-name "~/.emacs.d/site-lisp/dash") load-path)) (load-library "~/.emacs.d/site-lisp/dash/dash.el") (setq load-path (cons (expand-file-name "~/.emacs.d/site-lisp/with-editor") load-path)) (load-library "~/.emacs.d/site-lisp/with-editor/with-editor.el") (setq load-path (cons (expand-file-name "~/.emacs.d/site-lisp/magit") load-path)) (load-library "~/.emacs.d/site-lisp/magit/magit.el") - emacs23 以下の emacs 環境では、 defvar-local 関数が存在しない関係で、使える magit のバージョンは 1.2.2 以下となる。 - with-editor.el は元々 magit に組み込まれていたが、下記の commit 以降で外に出されており、別途自分で組み込む必要がある commit e87fe8180b6513450a110b7ad4fed887895720c3 Author: Jonas Bernoulli <jonas@bernoul.li> Date: Thu Jan 28 21:01:06 2016 +0100 move with-editor to its own repository /////////////////////////////////////////////////////////////////////////////// * コマンド [#o7c058aa] - magit のキーバインドは、バージョンによって幾つか変更されているものがあるので注意が必要。~ Version 2.1.0 であれば "h" でhelp を参照出来、2ストロークなキーバインドのものについては都度コマンド候補が表示されるので、それを参照すれば良い。 |~binding |~command |~remark | |M-x: magit-status | magit-mode 起動 | | | h |magit のヘルプを表示 | | | E |magit-diff-popup |git diff の操作メニューを表示する | | M |magit-remote-popup |git remote の操作メニューを表示 | | F |magit-pull-popup |git pull の操作メニューを表示 | | P |magit-push-popup | git push の操作メニューを表示 | | s | git add | 選択中のファイルを stage に追加(commitの対象に)する | | S |全ファイルを stage に追加する | | | u |magit-unstage |ファイルを stage から降ろす | | U |magit-unstage-all |全ファイルを stage から降ろす | | c |commit log を書く | | | C-c C-c | git commit | commit する | | C-c C-a | git commit --amend | commit をやり直す | | l | git log | log を表示する。 l-l でshort log, l-L で verbose な log を表示する | | z | git stash | stash を作成する | | a | git stash apply | stash を適用(apply)する | | A |magit-cherry-pick-popup | git cherry-pick の操作メニューを表示する | | k | git stash drop | stash を drop(最新の stash 1つを list から削除)する | | %%b%% y | | branch-manager を起動する&br;(2015-11-26 以降、従来の magit-branch-manager に代わり、新たな I/F が "y" で起動するようになった) | | f f | git fetch (Current) | | | f o | git fetch (commit) | | | f a | git fetch (all remotes) | | | m | git merge | | | M-x: magit-reflog | git reflog |そのリポジトリ上で行った git の操作履歴を表示する | | d | git diff |ローカルの編集差分の表示 | | r |magit-rebase-popup| git rebase の操作メニューを表示する | | t |magit-tag-popup |git tag の操作メニューを表示する | | T |magit-notes-popup | | //============================================================================= ** diff [#d6b0165e] - リポジトリと差分のあるファイルのファイル名の上で "e" を type すると、emacs の ediff を利用した差分編集画面が起動する。 - この diff の画面は、ある時期に 2ペインから3ペインに変更されているが、これは "e" に割り当てられた関数が変更されたため。 |~画面 |~関数 | |2ペイン |magit-ediff-compare | |3ペイン |magit-ediff-dwim | - 最新の magit で、差分編集を以前の2ペインにしたい場合は、magit を読み込んだあとの方で、以下を記述する (define-key magit-mode-map "e" 'magit-ediff-compare) -- これで、若干面倒ではあるが(その代わり比較対象をどのブランチにするかなど、手動で都度選べるようにもなる)、2ペインの diff が使えるようになる。 -- 但し、conflict 解決の場合に magit-diff-compare を起動すると、(マージや rebase による)conflict 前後の比較ではなく、conflict した結果と現在の HEAD との比較となってしまう。この場合には magit-ediff-dwim を起動するようにする。~ → ''"e"'' と ''"E"'' で両者を使い分けると良いだろう。 /////////////////////////////////////////////////////////////////////////////// * link [#y086fb37] - [[magit.el を試してみた>http://gom.hatenablog.com/entry/20090524/1243170341]] - [[[git][emacs] magitメモ>http://w.koshigoe.jp/study/?%5Bgit%5D%5Bemacs%5D+magit%A5%E1%A5%E2]] - [[Magitユーザーマニュアル>https://docs.google.com/document/d/1v1lw539dpN3EVksU-CAjD-4vFeb_w3Ez3Y2RfVlE2F8/edit]] /////////////////////////////////////////////////////////////////////////////// * 環境構成(メモ) [#r624029e] ** emacs 25.1.1 [#i8d7999f] |~module |~heads | |magit |refs/tags/2.8.0 | |magit-popup |refs/tags/v2.12.5 | |dash |refs/tags/2.13.0 | |with-editor |refs/tags/v2.5.0 | - magit 2.5.0 は、(環境問題もあるかも知れないが)改行コードが CR/LFのファイルの差分編集をうまく扱えない問題がある。