はっさんブログ

やっていき検証

git rebaseで修正したコードを離れたcommitに追加する

スポンサーリンク

ゴール

修正したコードを3つ前に離れたコミットに加える。
コミット文はコミット先のままにする。

一度ログを確認する

$ git log

commit d0c30d97fd25e5168e6477dee521b0ebabe04703
Author: Hassan <hassan@tenso.com>
Date:   Tue May 23 17:39:09 2017 +0900

    :+1: 検索フォームのPlaceholder文を親切にした

commit 6d2d3391902a05b2d4e0d2eeac3e982b222a7d92
Author: Hassan <hassan@gmail.com>
Date:   Tue May 23 17:35:37 2017 +0900

    :+1: CSSで検索フォームの位置を調整した

commit 2cf65579461cb884d355b0b54a01a2c927863780
Author: Hassan <hassan@gmail.com>
Date:   Tue May 23 17:34:46 2017 +0900

    :+1: 検索用のパラメーターがあった場合に絞り込みを行う

commit b2c066eb9bd594da2d5316e5770cc2246af5099f
Author: Hassan <hassan@gmail.com>
Date:   Tue May 23 17:34:09 2017 +0900

    :+1: 検索用のフォームを追加

一番上のコミットは単なる微修正です。
なので、4つめのコミットで追加したことにしたい。

rebaseを使う

$ git rebase -i head~4

head~4で上から4つめまでのコミットをrebaseの対象範囲とします。

pick 711292a :+1: 検索用のフォームを追加
pick 197b1e3 :+1: 検索用のパラメーターがあった場合に絞り込みを行う
pick 43dff97 :+1: CSSで検索フォームの位置を調整した
pick 9628f0b :+1: placeholder内の説明文を親切にした

# Rebase ab86cee..9628f0b onto ab86cee (4 commands)
#
# 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

まとめたいcommitの行をpickからsquashのsに変えます。
s 9628f0b :+1: placeholder内の説明文を親切にした

squashは一つ上のコミットに対して処理を行うので、 sに変更したものをまとめる先のコミットの下に移動して保存します。

pick 711292a :+1: 検索用のフォームを追加
s 9628f0b :+1: placeholder内の説明文を親切にした
pick 197b1e3 :+1: 検索用のパラメーターがあった場合に絞り込みを行う
pick 43dff97 :+1: CSSで検索フォームの位置を調整した

すると、コミット文を変更するためにエディタが開かれます。

# This is a combination of 2 commits.
# This is the 1st commit message:

:+1: 検索用のフォームを追加

# This is the commit message #2:

:+1: placeholder内の説明文を親切にした

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# Date:      Tue May 23 17:34:09 2017 +0900
#
# interactive rebase in progress; onto ab86cee
# Last commands done (2 commands done):
#    pick 711292a :+1: 検索用のフォームを追加
#    s 9628f0b placeholder内の説明文を親切にした
# Next commands to do (2 remaining commands):
#    pick 197b1e3 :+1: 検索用のパラメーターがあった場合に絞り込みを行う
#    pick 43dff97 :+1: CSSで検索フォームの位置を調整した

二つ目のコメントは不要なため、コメントアウトして保存します。

# This is a combination of 2 commits.
# This is the 1st commit message:

:+1: 検索用のフォームを追加

# This is the commit message #2:

# :+1: placeholder内の説明文を親切にした

git logを再度確認

目的達成!!!

commit 2a32a6db03660f761542d765aea5d487ac4b6299
Author: Hassan <hassan@gmail.com>
Date:   Tue May 23 18:07:39 2017 +0900

    :+1: CSSで検索フォームの位置を調整した

commit 877bab9f52256af8916f69ddd96350e5e82fb698
Author: Hassan <hassan@gmail.com>
Date:   Tue May 23 18:06:52 2017 +0900

    :+1: 検索用のパラメーターがあった場合に絞り込みを行う

commit 549f87bac4a4e3d1cd3ae4a5bb87bbd48d645964
Author: Hassan <hassan@gmail.com>
Date:   Tue May 23 17:34:09 2017 +0900

    :+1: 検索用のフォームを追加
広告を非表示にする