LoginSignup
4
1

More than 1 year has passed since last update.

過去のgit commitの変更内容を修正したいときの手順

Posted at

この記事は?

ことみん 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)
以下略

次の順で操作し、修正するコミットを指定します。

  1. 編集モードに入る
  2. 修正したいコミット9979f07 3番目のコミットの行のpickeditに編集する
  3. 保存して終了する

編集したあとの内容がコチラです。

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を修正をしなくても良くなりますね。

4
1
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
4
1