前回メモしたIssueからPullRequestを作成するをワークフローに入れるとある問題が生じる。
それは、空のコミットを作成しているせいで、そのPullRequestをMasterブランチにマージした場合、masterブランチに余計な空コミットが作成されてしまうという点だ。
正直言って、僕は「それでもいいじゃん、変更が追いにくくなるわけでもないし」という考えをしてしまうのだが、会社では可能な限りコミットは綺麗にする方針なので、コミットを修正する方針をとっている。
この変更なのだが、vimが使えないと辛い。
ネットで調べても「vim?使えて当然だろ」と言わんばかりの資料ばかり。
知らないのが悪い、自分で解決しろ、というプログラマのこういうところが嫌だ。
(自分の向上心のなさを棚に上げる)
とりあえず、仕事で使っている最低限のコミット修正、rebaseの使い方を書いていく。
1)commitを行い、pushできる状態にしておく
2)ログを確認し、どのコミットを修正したいか確認する
ex)今回は3番目のfixというコミットを、2番目のwriteというコミットに統合させることを目的とします |
3)rebaseコマンドを打ち込む
- git rebase -i HEAD~(戻る分のコミット数)
- ex)git rebase -i HEAD~2
4)採用する修正(=最新の修正)のpickをfixupに書き換える
rebaseコマンドを行った途端こんな画面に。 入力する前にキーボードでiを押して入力モードにする。 |
今回はfixというコミットを採用するので、fixの行をpickからfixupに変更する。 入力したらescキーを押し、コマンドモードに戻る。 |
5)編集を完了させる
- コマンドモードで”:wq“と打ち、Enterを押す
6)成功したかgit logで確認
成功。コミットが2つになっている。 “create”コミットの内容は編集前の”create”と”fix”を合わせたものになっている。 リネームが必要な場合は後述参照。 |
7)成功してれば、pushする。ただし、コミットの書き換えで競合が起こるので、強制pushする
- git push origin +”ブランチ名”
僕のワークフローでは6)の後、もう一回rebaseでコミット名の修正をしています。
コミット名の修正は”pick”を”reword”として編集完了すればリネーム画面が開かれます。
vim触ったことなかったんだけどメリットが分からない。
どうも、PC初心者です。