概要
何度もコミットしてプッシュするとリモートブランチに履歴が残ります。残す必要のあるコミットであれば問題ないですが、簡単な修正であれば1つ前のコミットにまとめた方がコードレヴューの際、レビュワーは見やすくなると考えています。また、コミットをまとめる事で、後から履歴を追う際、コミットメッセージから何をやっているか一目で分かり易くなると思います。今回は、チーム開発に於いて、便利なgit操作を学んだのでその方法を共有します。
注意事項
- 同一のブランチで2回以上のコミットを行った場合に使用する
-
resetを行い過ぎると、他の人の改修内容が含まれてしまうので注意が必要 - 共通で使っているブランチ(
develop、master、main等)では、絶対に使用しない
実施方法
-
git logにてコミットの状況を確認する
# コマンド
git log
# 出力内容
commit **********************************a82a81 (HEAD -> feature/git_amend_test_branch, origin/feature/git_amend_test_branch)
Author: kengo-sk8 <****************@******.***>
Date: Wed Jan 1 00:00:00 3000 +0900
feat: 文字を追加
commit **********************************01441a
Author: kengo-sk8 <****************@******.***>
Date: Wed Jan 1 00:00:00 3000 +0900
feat: git amendのテストコミット1
# 以下省略
※ git logは q を入力する事で抜け出せる
-
feat: git amendのテストコミット1のコミットにfeat: 文字を追加のコミットをまとめたい為、下記のコマンドを使い1つ前のコミットの状態に戻す
git reset HEAD~
# ~ の後に数値を入れると2つ前、3つ前にコミットを戻せる
- コミットするファイルを下記のコマンド等を使用してステージングエリアに追加する
(vscodeやSourcetree等のGUIでgitの操作ができるツールで行っても良い)
# 全てのファイルを追加する
git add -A
# 指定ディレクトリ配下の変更や、新規作成した全てのファイルを追加する
git add .
# 新規を対象にせずに、更新のあった全てのファイルのみを対象にする
git add -u
- 現在のステージングエリアの変更を含むコミットを作成する。その際、最新のコミット(HEAD)のメッセージを再利用する為、下記のコマンドを使用する
git commit -C HEAD --amend
- ローカルとリモートのブランチ間で差分がある為、以下のコマンドを使用を使用して、ローカルのブランチを強制的にリモートにプッシュする
git push -f origin ブランチ名
- git logで確認するとコミットがまとめられている
# コマンド
git log
# 出力結果
commit **********************************9574c4 (HEAD -> feature/git_amend_test_branch, origin/feature/git_amend_test_branch)
Author: kengo-sk8 <****************@******.***>
Date: Wed Jan 1 00:00:00 3000 +0900
feat: git amendのテストコミット1
余談
-
gitでリモートリポジトリから最新の変更を強制的に取得(pull)するには、以下のコマンドで行う
git fetch origin
git reset --hard origin/<branch_name>
参考資料
まとめ
レビューワーの視点で考えると、コミットをまとめて置くことは、とても重要だと実感しました。今後は、この操作を多用して、gitのlogを綺麗に保てるようにしていきたいと思います。
