1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

複数のコミットを1つにまとめる方法

Last updated at Posted at 2023-11-09

経緯

OJTでアプリ開発をしていた際に、
『〇〇からxxまでのコミットを一つにまとめて再度プッシュして』
とレビューを受けた際に苦戦したので作業メモを残しておくことにしました!

必要な拡張機能を追加

image.png

Visual Studio CodeからこちらのGit Graphという拡張機能を追加しました

ブログ記事を参考に作業開始

このあたりについてはこの記事を参考にしました
参考:複数のコミットをまとめる

統合したいコミットたち(赤の四角で囲んだ2つのコミット)の下のコミットを右クリックして
『Rebase current branch on this Commit...』
を選択する
スクリーンショット 2023-11-09 9.41.24.png

image.png

Launch Interactive Rebase in new Terminalにチェックを入れて、rebase開始。

記事どおりにGitLensが開くはず、、、
と思ったら開かなかった。。。

のでvimで作業を継続することにしました

vimでコミットを統合

Untitled.png

実際に作業した際は上の5つを統合しました。
先ほどのGitGlaphのものとは上下が逆になっているみたいです。

vimにも慣れていないので、それも込みでメモ

  • 『i』でインサートモード
  • 5つのコミットを1つにまとめるために
    rails g Model Taskコミットのpickを除いて、下の4つのpickをsquashに変更
  • escでインサート解除
  • :wqで上書き保存

※途中で止めるときは:q!でも良いし、中途半端に終えてしまったときは


git rebase --abort

でリセットできました。



ここまで済むとコミットメッセージを編集する画面が出てきました。

ああntitled.png

スクショし忘れていたので、画像は編集済みのもの。赤い四角の部分に今までの元のコミットメッセージが出てくるので、必要ないものをコメントアウトして、必要なものだけ残して内容を変更しました。

これで上書きすると、5つのコミットが統合されて、コミットメッセージとしては
『ModelTaskを作成してバリデーションとseedsを実装』
となりました。

変更をリモートに反映させる

このままpushしようと思ったが、リモートのコミットの構造と違うので衝突が起こって実行できなかった、、


git push -f origin HEAD

-fオプションをつけることで強制的にプッシュすることができた。今回は一人での開発だったので特に注意もなくできたが、チーム開発時は注意が必要とのこと。

まとめ

以上でコミットをまとめて、再レビューを上げることができました!めでたしめでたし

もっと良い方法があったらぜひ教えていただきたいです。

1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?