Open7

gina.vimを使い始める備忘録

kamechakamecha

簡単な操作はtig、コミットグラフを見ながらfetch・mergeとかをvscodeのgitgraphでやってたので
vimのプラグインで完結させたいので触ってみる
良い感じになれたらfzf-previewよろしくdduとginaを連携するプラグインとか書いてみたいな(浅はかな希望)

kamechakamecha

ひとまず基本的な操作、add・commitあたりをやる
:Gina statusgit statusと同じ画面を表示する
画面上で

  • <<: stage
  • >>: unstage

等の操作ができる(:h gina-buffer-status
キーマップも変更可能なのでtigと揃えてみてもいいかもしれん

:Gina commitgit commitと同じ画面を表示
コミットメッセージを書いて:wqとかやる(ここはtigとかとあまり変わらない)

kamechakamecha

status画面での

  • cc: 2つのバッファを利用した比較
  • pp: 3つのバッファを利用したパッチ(コンフリクト解決に便利そう)
  • !!: コンフリクト解決に3つのバッファを使用

をした後に表示される画面がVSCodeでの変更差分表示と同じ感じがしてよい(vimdiff使ってそう)
ccでの表示例

部分的にステージしたいときは選択してから:diffpuptでOKらしい
vimdiffのコマンドらしく普通にヘルプに書いてある

tigだと厳密に指定できず毎回この操作のためにvscode開いてたので、ちょっと便利になったかも~

kamechakamecha

:diffputとかだと、2つのバッファの差分をなくすだけでステージしてる事にはならないっぽい?

よく分かってないので、この辺調べとく

nomodifiableバッファとmodifiableバッファがある?
保存できるようなバッファがあるので、そこで保存すると:diffputとかの変更がステージされるっぽい
知らんけど

kamechakamecha

add,commitができたのでpush,fetchとかの確認をする

多分おそらくきっとネット経由関連のコマンドはあんまり用意されてない?
tigと同じような感じなのかな

:Gina pushとすると内部的に:Gina! pushが呼ばれるらしく、内部的に素直にgitが呼ばれるぽい
fetchも同様
これだと面倒なのでキーバインドとかを設定するのが良さげ

kamechakamecha

VSCodeのgit graphよろしく、グラフ表示してswitch、mergeとかしたい

まずグラフ表示に:Gina log --graph --allを使用する

こんな感じに専用のバッファにそれっぽく表示される
ここは普通のgit log --graph --allの表示と変わらない

この状態でaを入力すると†アクション†待機するようになり(コマンドラインにaction:のプロンプトが表示)
対応するアクションを入力する(このときTab補完が効く)

例えばマージしたい時は対象のコミットにカーソルをあわせてaとした後にcommit:mergeを選択する
mergeはcommitのアクショングループになってるみたい

このあたりの操作は:h gina-usage-action``:h gina-actions-commitとかを参照する