Top > GIT > コミットの整理整頓


rebase 編

rebase は、一言でいうと、コミットの整理整頓ができます。
コミットの履歴が見やすくなったり、整理整頓が好きな方にはお勧めです。

rebase で出来ること
  • 2つ以上のコミットを1つに統合できる
  • コミットメッセージを後から変更できる
  • コミットの順序を後から変更できる
  • 一度コミットした内容を編集できる
rebase でやってはいけないこと
  • リモートに push したコミットを編集する場合は、clone している人全員に影響がでる
  • ローカルのコミットのみに対して行うのが無難
  • コミットの操作後、特に統合などの後は SHA1 の値が変わる


コミットを統合する (まとめる)

例えば、以下のようなコミットが入っているとします

$ git log --oneline
0d4a808 pullの説明を追加
9a54fd4 commitの説明を追加
・・・・

上記の2つのコミットをまとめるには、rebase -i を使います

コマンド
$ git rebase -i HEAD^^
書式
$ git rebase -i <after-this-commit>
  • <after-this-commit>
    SHA1 または上記の例のように HEAD などの予約語を指定可能

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

pick 9a54fd4 commitの説明を追加
pick 0d4a808 pullの説明を追加

# Rebase 326fc9f..0d4a808 onto d286baa
#
# 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
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#
  • 2行目の pick の文字を squash に変更して保存・終了する
  • まとめた後のコミットメッセージを編集するためのエディタが勝手に開く
  • 編集して保存・終了する

Tips

  • git pull のコマンドを使用してリモートの変更をローカルに取り込むと、
    ローカルでコミットしている場合、merge コミットが追加されてしまう
  • git pull --rebase を使用すると、ローカルのコミットがリモートの origin/master の後にコミットされたことにしてくれる


コミットメッセージを変更する

  • 上記と同様に、git rebase -i を使用します
  • squash ではなく reword に変更して対象のコミットメッセージを編集する

Tips

$ git reset --soft HEAD^
$ git commit -a

としても、コミットメッセージを変更することができる


リロード   凍結解除 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: Sat, 17 Jan 2015 23:41:02 JST (888d)