gitでコミットをまとめる際に、リベースを行うことはよくあると思う。
GitBashであれば、その際にVimで編集することになるので
その際に利用するvimコマンドもまとめておこうと思う
練習
まずは適当なコミットを用意して、それをリベースしてみる。
この例であれば、53707c2
のコミットに対してリベースを行ってみる。
リベースを実行
yy
でフォーカスされている行のコピーを行う。
今回であればpick da7522e...
の行をコピーする。
vimコマンドを実行しても、コピーできているかは視覚的には分からない。
p
でコピーした行のペーストをフォーカスしている行に対して行う。
削除をするときはINSERTモード(編集)で削除するか、dd
コマンドで切り取って削除する。
i
でINSERTモード(要は編集)になり、ここで内容の削除・追加などが行える。
当たり前だが、ここはキーボード操作になるのでvimコマンドは使えない。
vimコマンドを使いたい場合はESCキーを押下して、INSERTモードから抜ける。
リベースによるコミットの扱いを変える
リベースの操作は、画面に表示されている通り。
これはvimの操作ではなく、gitのrebaseコマンド特有の操作である。
実は他にも表示されるコマンドはあるが、使うことはほぼない。
使う機会が出てきたらまとめようと思う。
p, pick → コミットをそのまま利用する。
r, reword → コミットはそのまま使うが、コミットメッセージは修正する
s, squash → コミットは利用せず、前のコミットに結合する
f, fixup → コミットを利用せず、そのコミットメッセージは消える
リベースによるコミット順番の操作
一応、コピー・ペースト・削除をつかうことで、コミットの順番を変えることができる。
しかし、コミットタイミングを変えたことで高確率で競合が発生してしまうので、あまりお勧めはしない。
そうならないようにコミットメッセージは分かりやすくする。
もしくは、順番を変えるまでする必要のあるわけのわからないコミットは入れないようにした方が良い。