こんにちは!ゆきまさです!!(@yyykms)
開発中にファイルの add 忘れや、誤字脱字、修正漏れ等のちょっとしたミスをしたまま commit してしまったという経験があると思います。
「ちょっとした修正分のコミットで履歴を汚したくないなぁ」とか、「前のコミットにまとめたいなぁ」とか思ったことはありませんか?
そういった時に git commit --amend を使用することで、1つ前のコミットを修正することができます。
今回は同じような思いをした人向けに git commit --amend の使い方を紹介していきます。
amendとは?
「amend 意味」などで検索すると「修正する」や「改心する」などと出てきます。
その意味のままで、git commit に --amend オプションをつけることで直前のコミットを修正することができます。
修正漏れがあったファイルなどをまとめたり、逆にコミットしてしまった内容を修正したり、コミットメッセージを修正したりすることができます。
git commit --amend の使い方
git commit --amend は直前のコミットを修正するコマンドです。
修正といっても元々のコミットとは違うコミットを作成するため、コミットIDが変わってしまうので注意が必要です。
リモートにあるコミットに対して修正してしまうと履歴が変わってしまうため、基本的には push したら使用しないようにしましょう。
それでは具体的な使い方を紹介していきます。
追加するファイルを忘れてコミットしてしまった時
追加するファイルを忘れてコミットしてしまった場合は、以下のようにすることで新たにコミットを作らずに修正することができます。
$ touch test1.txt
$ git add test1.txt
$ git commit -m "first commit"
↑追加するファイルを忘れた!!
$ touch test2.txt
$ git add test2.txt
$ git commit --amend
これで test2.txt が追加され “first commit” が新しく作られました。(コミットIDが変わっている。)
誤字をしてそのままコミットしてしまった場合
コミット後に誤字に気づき、誤字だけのコミットを作成したくない場合に、git commit --amend で直前のコミットを修正することで誤字をなかったことにできます。
$ vi test1.txt
test1.txt
五時の修正
↑「誤字」を「五時」と間違えてしまった例
$ git add test1.txt
$ git commit -m "second commit"
コミット後に誤字に気づいたので、修正し再度コミットする
$ vi test1.txt
test1.txt
誤字の修正
↑「誤字」に修正
$ git add test1.txt
$ git commit
これで直前のコミットが修正されました。
コミットメッセージを変更したい場合
僕がgit commit --amendを知ったのは「コミットメッセージ 修正」と検索して出てきたときでした。
最初はコミットメッセージを修正するオプションかと思っていましたがそれだけじゃなかったようです笑
さて、コミットメッセージの修正ですが、内容の修正がなければそのままコマンドを実行し、メッセージを変更するだけです。
以下は「commit」のmが足りなかった例です。
$ git commit -m "third comit"
$ git commit --amend -m "third commit"
注意事項
コミットの修正は直前のコミットに対してだけ
git commit --amend は直前のコミットを修正するコマンドなので、2つ以上前のコミットは修正できない点に注意しましょう。
2つ前のコミットやそれ以上のコミットを修正したかったり、コミットメッセージを修正したいなどの場合は git rebase -i を使用しましょう。
コミットIDが変わる
また最初にも書きましたが、git commit –amend をすることでコミットIDが変わってしまうので、そこも注意が必要です。
むやみにまとめない
いくら修正できるからといって、むやみにまとめるのはやめましょう。
意味のある単位でコミットを作っていけばまとめなくてもいい場面があるかと思います。
まとめ
- git commit –amendは直前のコミットを修正できる
- ファイルを追加し忘れたり、小さな修正があった時などに使える
- コミットメッセージを修正したいときに使える
- 2つ以上前のコミットに対してはgit rebase -iを使う
- コミットIDが変わるのでpushしてある時は注意する
- むやみにまとめない
ということで、git commit --amendの使い方でした。
今後はつまらないミスをコミットせずにまとめたり、修正したりすることができます。
ですが、そもそもつまらないミスをしたままコミットをしないように注意しましょう!笑