もがき系プログラマの日常

もがき系エンジニアの勉強したこと、日常のこと、気になっている技術、備忘録などを紹介するブログです。

2つ以上前のコミットに修正を混ぜる

はじめに

こんばんは。

久々に gitで rebase を使ったので、ちょっとした備忘録として残しておきます。

gitのバージョンは以下

$ git --version
git version 2.32.0

本番

今まで自分は rebase 使う際は 無駄なコミットをまとめる際に使ったりしていました。

$ git rebase -i HEAD~3

hint: Waiting for your editor to close the file... 
pick 8edxxxxxx aaaaa
s 2a8xxxxxx bbbbb
s 60cxxxxxx ccccc
s 532xxxxxx dddd

$ git push origin head -f 

みたいな感じで。

今回はコミット漏れした修正ファイルを以前のコミットに混ぜたいということやりたい感じでした。

直前のコミットであれば --amend で出来ます。

$ git commit -a --amend

ただ、今回は2つ前のコミットに混ぜたかったんです。。。

色々調べてこんな感じでできました。

# 修正物をまず退避
$ git stash save

# reabseインタラクションモード実行
$ git rebase -i HEAD~3

hint: Waiting for your editor to close the file... 
pick 8edxxxxxx aaaaa
edit 2a8xxxxxx bbbbb   ← 二個目のコミットを edit にする
pick 60cxxxxxx ccccc
pick 532xxxxxx dddd

# 修正物をもってくる
$ git stash pop 

# 修正物をコミット(amendが必要)
$ git commit -a --amend

# コミットを反映
$ git rebase --continue

上記のコマンドの順番で狙ったコミットに修正物を混ぜることが出来ました。

終わり

rebase 便利ですね。

ぶっちゃけ変になったら git rebase --abort で全部巻き戻せばいいので。

そろそろ今年の目標の資格の勉強しようっと。

現場からは以上です。