
git commitした際に「あのファイルをcommitし忘れた!」とか「コメントをタイポしたまま、commit」してしまったという経験はないでしょうか?そんなときに追加でcommitするのもはばかられますよね?こうゆうときにはgit commit --amendを用いると非常に便利です。今日はgit commit --amendについて解説していきます。
git commit --amendとは?
git commit --amendはローカルでコミットメッセージや、追加のコミットを行いたい時に、使用できるオプションです。またリモートリポジトリに対してもgit push --force originなどと組み合わせることで修正を行うことが可能です。
force pushは強制的にリモートリポジトリのコミットグラフを書き換えてしまうので、リモートに対して変更を加える場合には注意をしてください
git commit --amendの使い方
それではgit commit --amendの具体的な使い方について説明していきます。
commit messageを修正する
例えば以下のようにaddしたファイルをcommitしようとしたときにタイポをしてしまったとします。
git add a.txt
git commit -m "add: ne wfile" # new fileを打ちたい
こうなった際に、git commit --amendを使えば、新しいcommitを追加することなく、commit messageを修正することができます。
git commit -m "add: new file" --amend # Modified a commend without a new commit
commitし忘れたファイルを追加する
またcommitし忘れたファイルなどを追加することも可能です。以下のようにgit add->git commit --amendすることで現在のcommitに変更や新規ファイルを追加することが可能です。
git add a.txt
git commit -m "add: new file"
git add b.txt # 追加し忘れたファイル
git commit -m "add: new files" # Added b.txt as well without a new commit
上記のようにすることで、b.txtを今のcommitに追加すると同時に、コメントの修正も行うことができます。
git commit --amendのユースケース
前のセクションでgit commit --amendの使い方について説明しましたが、具体的にどのようなユースケースがあるのでしょうか?
コメント修正したい
使い方の部分で説明した通り、コメントのタイポなどを修正するときに使用します。
commitし忘れたファイルを追加したい
使い方の部分で説明した通り、commitに含め忘れたファイルを後追いで追加してcommitに追加することができます。
ファイルの変更を新規commitを作らずに追加したい
作業している最中に、ファイルの更新漏れや、docsのタイポなどを見つけることがあると思います。そのような軽微な修正を行うときにも、git commit --amendを使えば、あとから今のcommitに変更を追加することが可能です。
なぜgit commit --amendを使うのか?
それではなぜgit commit --amendを使うのでしょうか?正直好み的な部分もあるのではないかと思いますが、commitグラフをきれいに保つことで、PRレビュー時に変更をトレースしやすくする目的があると考えています。余計な修正commitを新規で追加すると、commitグラフが長くなり、また適切な単位でcommitされなくなるため、レビューしにくくなる可能性があります。きれいなcommitグラフを保つことで、レビューしやすくなり、チームとしての品質や生産性につながるかと思われます。
上記はあくまで個人的な一つの理由だと思いますので、その点、ご承知おきください。
まとめ
git commit --amendについて紹介しました。これを用いることでcommitグラフをきれいに保つ助けになりますので、ぜひ使ってみてください。