はじめに
複数の小さな変更を1つのまとまったコミットにまとめることで、コミット履歴を整理し、見やすくすることができます。
ここでは、Git手順を記載します。
1点注意点として、rebaseを実行するとコミットハッシュが変更されます。
push済みの場合は他作業者に作業を実施することを連携しておきましょう。
手順
1. コミットログを確認する
リベースを開始するまでにどのコミットを変更するのかを指定するためにコミットハッシュを確認します。
$ git log --oneline
8e75880 (HEAD -> main) fix: text
41a4fe9 fix: header clolor
3e89043 [wip] 一旦コミット
80e3b0d first commit
上記を例に、3e89043と41a4fe9をまとめることとします
最新のコミットから2つ目をこの後のrebase開始時に指定します
2. リベースを開始する
リベースを開始します。リベースを行いたいコミットの親コミットのハッシュを指定します。
$ git rebase -i 80e3b0d
-iオプションについて補足
補足ですが、-iオプションはinteractiveの意味でした。
コミットログをどのように変更するかを対話的に再構築するということですね
-i
--interactive
Make a list of the commits which are about to be >rebased. Let the user edit that list before >rebasing. This mode can also be used to split >commits (see SPLITTING COMMITS below).The commit list format can be changed by setting the configuration option rebase.instructionFormat. A customized instruction format will automatically have the commit hash prepended to the format.
See also INCOMPATIBLE OPTIONS below.
https://git-scm.com/docs/git-rebase#Documentation/git-rebase.txt--i
3. vimエディタでコミットを編集する
rebase実行後に、vimコマンド操作から編集します。
vimコマンド詳細は割愛しますが、以下で事足ります
-
i
挿入モード -
ESC
挿入モードを終了する -
:wq
保存して終了
まとめたいコミットの行を pick から fixup に変更します。
以下のように編集します。
fixup 3e89043 [wip] 一旦コミット
pick 41a4fe9 fix: header clolor
pick 8e75880 fix: text
次のようなrebase操作を選択できます
操作 | 説明 |
---|---|
pick | そのままの状態でコミットを保持 |
reword | コミットメッセージを変更 |
edit | コミット内容を変更 |
squash | 複数のコミットを1つのコミットにまとめ、コミットメッセージを編集 |
fixup | 複数のコミットを1つのコミットにまとめ、最初のコミットメッセージを保持 |
drop | コミットを削除 |
手順 4: リベースを完了する
vimエディタを終了すると、変更が適用されます
再度コミットログを確認しておきましょう。
手順 5: 強制pushする
問題なければ強制pushしましょう。
git push -f origin <ブランチ名>
まとめ
コミット履歴を整理し、プロジェクトの履歴が明確になります。
細かい点ですが活用するようにしましょう。
参考