Gitのログや差分表示を快適にするdenite-gitdiff


みなさんGitの操作どうしていますか?
CUIでやる人GUIでやる人Vim内でやる人、様々かと思います。
私は、CLIもしくは、vim-fugitive、Gitログ確認は、agit.vim利用しています。
denite-gitを利用しようと思っていますが、まだ使いこなせてないです。

作ろうと思った経緯

現在のブランチって、指定ブランチと比べてどのファイル変更したんだっけ?
このコミットって、どのマージブランチだったっけ?
このマージコミットってどういうコミットがあったんだろ?
って気軽に確認したいことが多々ありました。
GitHubなどであれば、検索すればよいのですが、わざわざ開くの面倒なので、
いつも過ごしているVimから確認できるようにした方が圧倒的に便利です。

上記を解決するために、denite.nvimの拡張プラグイン
denite-gitdiff
を作ってみました!

よく使いそうな操作を紹介します。

gitdiff_file

現在のブランチと指定ブランチとの差分ファイル一覧を表示させます。
差分のファイル一覧が出た状態で、差分をみたいファイルに対して、openvdiffアクションなどを実行すると、
差分が表示されます。(vim-fugitiveプラグイン依存)
下写真は、Neovimmasterブランチとv0.3.1タグを比較し、
どのファイルが変更されたっけ?を表したものです。

gitdiff_log

現在のブランチと指定ブランチとの差分の、コミットログを表示させます。(GitHubのPRのコミットログみたいなやつです)
ターゲットを指定しなかった場合は、現在ブランチのログを表示します。

下記のようなコマンドで、現在開いているファイルだけのコミットログの表示もできます。

:Denite gitdiff_log::::`expand('%:p')`

コロン多すぎになっちゃった

branch_log アクション

このコミットってどのマージブランチだったんだろ?っていうときに使います。
そのブランチコミットログ一覧を表示させます。(GitHubのPRのコミットログ+マージコミットって感じです)
例えば、下記PRを例にしてみます。
https://github.com/neovim/neovim/pull/9322

merge_log アクション

このマージコミットってどんなコミットログだったんだろ?ってときに利用します。

さいごに

今後、非同期処理に切り替えてみようかなと思っています。
細かい部分の修正とかとか機能追加とかとかやっていきます。
ぜひぜひ使ってみてください。Windowsで動作確認していないので、動くかわからないです。(すんません。。。
Vim内でのGit生活をより良いものにしてきたいですね!