by shigemk2

当面は技術的なことしか書かない

git rebase -i でコミットの圧縮

複数のコミットを圧縮して1つのコミットにしたいとき。

% git rebase -i HEAD(うんたら)

で、設定されたエディタが起動する。

pick commit1
pick commit2
pick commit3
pick commit4
pick commit5

みたいな。commit1とcommit2を圧縮して1つのコミットにしたいときは、

pick commit1
squash commit2
pick commit3
pick commit4
pick commit5

として、内容を保存してエディタを終了する。
すると、

# This is a combination of two commits.
# The first commit's message is:
commit1
# This is the 2nd commit message:
commit2

みたいな内容でエディタが起動する。
あとはこの内容を適当にまとめて1つのコミットぽくするだけ。

追記:(うんたら)は ~3 などと指定する。~3 は以下のコマンドで確認できる。
また、HEAD^^^とHEAD~3は同じ。

git --no-pager log --graph --pretty=format:"%h %s" HEAD~10..
一番上が新しいコミット。
~1 は最新のコミットのみ、~2 は最新〜2番目に新しいコミットを意味する。
まあgit rebase -i HEAD~1なんかやってもrebaseの意味があるのか?