0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Git】squashでコミットを編集する方法

Posted at

はじめに

コミットをまとめる手段があることを先輩から教えていただいたため、学んだことをまとめます。

squashとは

複数のコミットをまとめてひとつにすること。
これによりコミット数が減り、PRの可読性が高まり、コミット履歴が追いやすくなる可能性があります。(場合によりけり)

WIPコミットを削除する

次のような履歴があるとします

$ git log --oneline
b2b2b2b  fix: タイポ修正②
a1a1a1a  fix: タイポ修正①
d4e5f6a  add: ログイン画面のバリデーション追加
f7g8h9i  wip: ログイン画面作成中
j1k2l3m  init: プロジェクト初期コミット

1. 過去4つのコミットを編集する

$ git rebase -i HEAD~4

エディタが開いて次のような画面が出ます:

pick f7g8h9i  wip: ログイン画面作成中
pick d4e5f6a  add: ログイン画面のバリデーション追加
pick a1a1a1a  fix: タイポ修正①
pick b2b2b2b  fix: タイポ修正②

ここを編集して操作します。

2. WIPコミットを削除したい → 行を消すだけ
削除する: wipコミット
行をそのまま消せばOK

pick d4e5f6a  add: ログイン画面のバリデーション追加
pick a1a1a1a  fix: タイポ修正①
pick b2b2b2b  fix: タイポ修正②

3. タイポ修正をひとつ前のコミットにまとめたい → "squash" を使う

pick   d4e5f6a  add: ログイン画面のバリデーション追加
pick   a1a1a1a  fix: タイポ修正①
squash b2b2b2b  fix: タイポ修正②

squashにすると、このコミットは前のコミットに結合される。

完了後のコミット履歴

xxxxxxx  add: ログイン画面のバリデーション追加
xxxxxxx  fix: タイポ修正
j1k2l3m  init: プロジェクト初期コミット

2つあったタイポ修正が1つのコミットに!

まとめ

このやり方を知ってから後でコミット履歴を修正できることがわかったため、恐る恐るコミットすることがなくなりました。
また、PR上でのコミット履歴を整理することができ、とても便利なコマンドを知ることができよかったです。

参考

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?