この記事は?
ことみん Advent Calendar 2022 2日目の記事です!
どういう人が読むといい記事か?
- 複数コミットした後にいくつか前に
git commit
した内容を変更したいことに気づいた人 - gitの概念はおおよそ分かるが
git rebase
はあまり使った経験がない人 -
git rebase
の具体的な手順を知りたい人 - 入社して3ヶ月後の私
どのコミットを修正するか git log で確認しよう
git log --oneline
を実行します。
git log --oneline -n 10
のように、-n
オプションで最新コミットから何行分出力するかを指定することもできます。
$ git log --oneline
bdc5250 (HEAD -> main) 4番目のコミット
9979f07 3番目のコミット
c05eebe 2番目のコミット
96a616c 1番目のコミット
例えば今回は、9979f07 3番目のコミット
の差分を修正します。
git rebase -i を使って編集しよう
修正したいコミットは9979f07 3番目のコミット
です。
修正に必要なのはその1つ前のコミットIDなので、今回必要なのはc05eebe 2番目のコミット
です。
2番目のコミット
のコミットIDのc05eebe
を指定してgit rebase -i
を実行します。
$ git rebase -i c05eebe
実行すると、このように表ターミナルに表示されています。
pick 9979f07 スクレイピングしたデータを保持するための型の定義
pick bdc5250 一覧ページからデータを取得
# Rebase c05eebe..bdc5250 onto c05eebe (2 commands)
以下略
次の順で操作し、修正するコミットを指定します。
- 編集モードに入る
- 修正したいコミット
9979f07 3番目のコミット
の行のpick
をedit
に編集する - 保存して終了する
編集したあとの内容がコチラです。
edit 9979f07 スクレイピングしたデータを保持するための型の定義 ←この行の先頭を編集しました
pick bdc5250 一覧ページからデータを取得
# Rebase c05eebe..bdc5250 onto c05eebe (2 commands)
以下略
保存して終了したあとは、修正したかったソースコードを編集してください。
編集が終わったらその状態でコミットを修正するため、以下のgitコマンドを順番に実行します。
$ git add .
$ git commit --amend
$ git rebase --continue
これで無事に編集が完了しました。お疲れさまでした。
すでにリモートブランチにpushしていた場合は、修正した内容を上書きするためgit push -f
のように-f
オプションをつけてpushしてください。
$ git push -f
おわりに
コレお覚えたらもうgit commit -m "refactor: typoを修正
をしなくても良くなりますね。