1
0

コミット履歴をまとめる方法

Posted at

概要

何度もコミットしてプッシュするとリモートブランチに履歴が残ります。残す必要のあるコミットであれば問題ないですが、簡単な修正であれば1つ前のコミットにまとめた方がコードレヴューの際、レビュワーは見やすくなると考えています。また、コミットをまとめる事で、後から履歴を追う際、コミットメッセージから何をやっているか一目で分かり易くなると思います。今回は、チーム開発に於いて、便利なgit操作を学んだのでその方法を共有します。

注意事項

  • 同一のブランチで2回以上のコミットを行った場合に使用する
  • resetを行い過ぎると、他の人の改修内容が含まれてしまうので注意が必要
  • 共通で使っているブランチ(developmastermain等)では、絶対に使用しない

実施方法

  • 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 logq を入力する事で抜け出せる

git hub上で見ると下記の様になる
コミット履歴.png

  • feat: git amendのテストコミット1のコミットにfeat: 文字を追加のコミットをまとめたい為、下記のコマンドを使い1つ前のコミットの状態に戻す
git reset HEAD~ 
# ~ の後に数値を入れると2つ前、3つ前にコミットを戻せる
  • コミットするファイルを下記のコマンド等を使用してステージングエリアに追加する
    (vscodeSourcetree等のGUIgitの操作ができるツールで行っても良い)
# 全てのファイルを追加する
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>

参考資料

まとめ

レビューワーの視点で考えると、コミットをまとめて置くことは、とても重要だと実感しました。今後は、この操作を多用して、gitlogを綺麗に保てるようにしていきたいと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0