開発していると以下のようなことがある
- 大きな機能の実装をしているとコミットのタイミングが難しい
- こまめにコミットしたいけど、ある程度の単位にしたい
- バッグアップの意味合いも含めてコミットしておきたいけど、コミットを細切れにしたくない
- 会社のPC、自宅のPCで開発していて常に最新の状態のソースを触りたい
- ステージング待ち、コミット待ちのファイル数が増えて気分が良くない
これらは、git rebaseが解決してくれます。
こまめにコミットする。
大きな機能の実装をしていても、「〇〇コントローラー追加」とか、「view側実装」とか細かい単位はあります。
そういうのをどんどんコミットしていきます。
また、設定ファイルにconstなどを追加して、もうこのファイルはこの機能の実装では変更しないなって場合はコミットして
コミット待ちリストから無くしてしまいます。
複数のPCで開発を行っている場合、未コミットのファイルはpullで取得できないので
会社、または自宅での作業終わりにはコミットしておきます。
一通り実装が終わったら、まずは履歴を確認
>git log
↓こんなのが表示される。
commit bdseill9a344jisjlkejflac673seji992029329
Author: xxxx yyyy xxxx.yyyy@gmail.com
Date: Sun Jun 21 07:54:45 2020 +0900
xxxxxを追加
commit 4790a247140eb18205b01e17eijsiejl1933c3db
Author: xxxx yyyy xxxx.yyyy@gmail.com
Date: Sat Jun 20 19:40:46 2020 +0900
yyyyyyyyモデル追加
commit 198ad7e3d47c61eaac7c41923782749328jw4jb1
Author: xxxx yyyy xxxx.yyyy@gmail.com
Date: Sat Jun 20 17:59:28 2020 +0900
zzzzzzzzzzzzリクエストクラスを追加
上記3つのコミットを1つにまとめたい場合
>git rebase -i HEAD~3
※HEAD~[まとめたいコミットの数]
viエディタが開かれるので先頭行の’pick’以外を’s’に変更して保存(:wq)
例)
pick fdseic6 update a.php
pick 6fee873 update2 a.php
pick 91jse74 update3 a.php
↓
pick fdseic6 update a.php
s 6fee873 update2 a.php
s 91jse74 update3 a.php
viエディタが開かれコミットコメントを入力
※自分の環境では日本語を入力すると落ちるので、適当に英語で入力
これでコミットを1つにまとめて完了だけど
コミットコメントを日本語で入力しなおしたい場合は
git commit –amend -m “○○○○○○○○○○”
リモートリポジトリにpushして完了
※既に細かいコミットをリモートリポジトリにもpushしている場合は
git push -f origin ブランチ名
として強制上書きでpushする
これで作業もしやすく、コミットがスッキリして
1つ1つのコミットでどんな作業をしたかが分かりやすくなります。