# 【Git】複数のコミットを1つにまとめる方法
# はじめに
どうも、後期中間テストが終わり、ホッとしていたのも束の間、レポートや課題に追われてフガフガしているaridaiです。
今回は 複数のコミットを1つのコミットにまとめる ということをやってみたので、それのメモを残したいと思います。
# 作業前の状態
test
ブランチがあります。
その中に3つのコミットがあります。
- テストコミット1
- テストコミット2
- テストコミット3
# 作業後の状態
test
ブランチに元々3つあったコミットを
- テストコミット!!!
の1つにまとめています。
# 操作の流れ
以下に順を追って説明していきます。
# コマンドを打ち込む
ターミナルに git rebase -i HEAD~3
と打ち込みます。
これは リベース を行うというコマンドで、-i
オプションと、引数に HEAD~n
を与えています。
この引数 HEAD~n
は 「HEAD (そのブランチの現在のコミット) から HEAD を含めてn個のコミットを編集対象にする」という意味です。
# git-rebase-todoを編集する
コマンドを打ち込むとエディタが立ち上がります。
(私の環境では VSCode に設定してありますが、大抵 Vi が立ち上がると思います。)
ここでは「どのコミットをどのような操作をするのか」を以下のコマンドによっていじることができます。
コマンド | 説明 |
---|---|
p, pick | コミットをそのまま残しておく。 |
r, reword | コミットを残すが、コミットメッセージを編集する。 |
e, edit | コミットの中身を編集する。 |
s, squash | 前のコミットに統合する。 |
f, fixup | 前のコミットに統合するが、コミットメッセージは破棄する。 |
x, exec | 任意のコマンドを実行する。 |
d, drop | このコミットを削除する。 |
今回は、0b9970e テストコミット2
と 4f14574 テストコミット3
に対して squash
を使うことにしました。
これによって 642d144 テストコミット1
に2つのコミットを統合させ、1つのコミットにまとめることができます。
編集したら、保存をし、エディタを終了させます。
# COMMIT_EDITMSGを編集する
すると、またエディタが立ち上がります。
ここではコミットメッセージの編集ができます。
#
で始まる行は無視されるので、この状態では
テストコミット1
テストコミット2
テストコミット3
というコミットメッセージになってしまうので、
テストコミット!!!
と書き換えてしまいましょう。
編集が終わったら、保存をしてエディタを閉じましょう。
# さいごに
成功した場合は
このようになると思います。
(SourceTree側の表示が作業前の状態の場合、これはターミナルでの編集との同期が取れていないだけなので、F5キーを押すと、更新がかかるので作業内容が適用されるはずです。)
というわけでこんな感じでコミットをまとめることができると思います。