ものづくりのブログ

うちのネコを題材にしたものづくりができたらいいなと思っていろいろ奮闘してます。

git rebase -i でコミットをまとめる

開発中にこまめに「wip」などと暫定コミットを行い後でまとめてコミットをまとめるときなどに利用します。

backlog.com


例えば HEAD から2つ目までのコミットをまとめたい場合、以下のコマンドを実行します。

$ git rebase -i HEAD~2

テキストエディタが開いて、HEADからHEAD~2までのコミットが次のように表示されます。

pick 954b049 wip A
pick b0f5f6c wip B

# Rebase 34e9dae..b0f5f6c onto 34e9dae (2 commands)
#
# Commands:
# p, pick <commit> = use commit
# r, reword <commit> = use commit, but edit the commit message
# e, edit <commit> = use commit, but stop for amending
# s, squash <commit> = use commit, but meld into previous commit
# f, fixup <commit> = like "squash", but discard this commit's log message
# x, exec <command> = run command (the rest of the line) using shell
# b, break = stop here (continue rebase later with 'git rebase --continue')
# d, drop <commit> = remove commit
# l, label <label> = label current HEAD with a name
# t, reset <label> = reset HEAD to a label
# m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
# .       create a merge commit using the original merge commit's
# .       message (or the oneline, if no original merge commit was
# .       specified). Use -c <commit> to reword the commit message.
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out

以下のように修正します。

pick 954b049 wip A
f b0f5f6c wip B

その後以下のコマンドでコミットメッセージを修正します。

$ git commit --amend