Header
2019-01-19
2019-03-21

Gitのコミットをまとめる

20190129

Gitのコミットを誤ったり、コミットが大量に増えてくると 後から見返した際に分かりづらくなることがあります。

今回はGitのgit rebaseコマンドを利用してローカルコミットをまとめて、リモートブランチにpushする方法を公開します。

ローカルコミットをまとめる

まずはgit logで対象を確認します

git log

commit 85f101fc3ef389928cf5f8760bc64ef4fdd72eaf
Author: hogehoge
Date:   Fri Jan 18 10:36:20 2019 +0900

    配列処理を追加

commit 08ddc911bb51e2eab3e34096d4fa552f4e7d2dfb
Author: hogehoge
Date:   Wed Jan 16 17:51:14 2019 +0900

    各種ファイル生成

上記の「配列処理を追加」のコミットを残して、「各種ファイル生成」のコミットと統合します

まず、 rebaseのコマンドでまとめるコミット数を指定します。

$ git rebase -i HEAD~まとめるコミット数字数字

上記コマンドで、現在の先頭から何個目までのコミットを抽出するか指定できますので、

今回は2つなのでコマンドは以下となります

$   git rebase -i HEAD~2              

そうすると以下のようにエディタが起動します

pick 85f101f  配列処理を追加
pick 903d54c 各種ファイル生成

# Rebase 08ddc91..903d54c onto 08ddc91 (2 command(s))
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
# d, drop = remove commit
#
# 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 統合するブランチはsと変更します。

pick 85f101f  配列処理を追加
s  903d54c 各種ファイル生成

中略

保存すると次はコミットメッセージを編集する画面へ遷移します。

# This is a combination of 2 commits.
# The first commit's message is:

 配列処理を追加

# This is the 2nd commit message:

各種ファイル生成

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# Date:      Wed Jan 16 16:44:01 2019 +0900
#
# interactive rebase in progress; onto f82b7a7
# Last commands done (2 commands done):
#    pick c60470b 2.4.5対応の為 encryptorのバイト数変更とgem変更(#38061)
#    s 108eefd mysql gemを削除したため不要になったコメントを削除(#38061)
# No commands remaining.
# You are currently editing a commit while rebasing branch 'test-tickect' on 'f82b7a7'.
#
# コミット予定の変更点:
#       modified:   ファイル名が表示される

上記コメント編集画面で、コミット統合後のコミットメッセージを編集します。 今回は 配列処理を追加のみを設定します。

# This is a combination of 2 commits.
# The first commit's message is:

 配列処理を追加
中略

その後保存するとコミットの統合が完了しました。

リモートブランチにPushする

この後リモートブランチへ統合したコミットを上書きするには 以下コマンドでpushできます。

git push -f origin master

ただ、ローカルと同様コミットが統合されるので チームで開発されている場合はほかの方への影響も発生します。

git push -f をされる場合はご注意ください

その他関連記事

Gitの基本コマンドと覚えておくと効率が上がるコマンド一覧

プログラミングした内容をgit pushしたらrejectされた時の対応方法

初心者が知っておくと便利なvimコマンド 一覧

rbenvでよく使うコマンド一覧

Linux環境でよく使用するコマンド一覧

前の記事
次の記事
人気記事
カテゴリーから記事を探す