概要
何度もコミットしてプッシュするとリモートブランチに履歴が残ります。残す必要のあるコミットであれば問題ないですが、簡単な修正であれば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
を綺麗に保てるようにしていきたいと思います。