レビュー指摘などで過去のコミットに対し、新たな修正をマージしたいとき、[[Lazygit]]でそれを実現する方法。
## 前提条件
以下のリポジトリを考える。
ファイルは以下3つ。
```console
file1.md
file2.md
file3.md
```
それぞれ1行ずつテキストが記載されている。
```console
master ❯ cat file1.md
hoge1
master ❯ cat file2.md
hoge2
master ❯ cat file3.md
hoge3
```
コミットは以下のようになっている。
![[Pasted image 20240408223856.png]]
ここで `file1.md`に1行追加した。これを以前のコミットにマージしたいものとする。
![[Pasted image 20240408224246.png]]
## fixup commitする
修正したいコミットを選択し、`F`で[[fixup commit]]を作成する。
![[Pasted image 20240408225141.png]]
成功すると `fixup! Update file1` というメッセージの[[fixup commit]]が作成される。これだけだと普通のコミットに見える。
![[Pasted image 20240408225227.png]]
## squashする
修正したいコミットを再び選択し、`S`で[[squash (Git)|squash]] (Apply fixup commits) を実行する。
> [!caution]
> `s`ではなく`S` (`Shift+s`) なので注意。
![[Pasted image 20240408225431.png]]
真ん中のオプションを選び、[[squash (Git)|squash]]で先にある[[fixup commit]]を取り込む。
![[Pasted image 20240408230058.png]]
[[fixup commit]]が来ていること、`Update file1`のコミットに[[fixup commit]]の変更点がマージされていることが確認できる。
![[Pasted image 20240408230211.png]]
## 参考
- [コミットログを楽に整形できるlazygitの紹介 | ランサーズ(Lancers)エンジニアブログ](https://engineer.blog.lancers.jp/tools/recommend-lazygit/)