こんにちは!ゆきまさです!!(@yyykms)
今回は git add に続き git commit について紹介したいと思います。
git commit とは?
git commit は git add によってステージングエリアに追加されたファイルを、ローカルリポジトリに追加するコマンドです。

ローカルリポジトリに追加することで、前回コミットした時の状態から現在の状態までの差分を確認したり、コミットを戻したりすることができます。
コミットは時系列順につながった状態でリポジトリに格納されています。このコミットを最新の物から辿ることで、過去の変更履歴やその内容を知ることができるようになっています。
そのため、Gitのバージョン管理はコミットによってできるのです。
ファイルをコミットする
コミットは基本的に git add によってステージングエリアに追加されたら git commit
とコマンドを打つだけです。
そうすることで、ローカルリポジトリに追加されバージョン管理ができるようになります。
$ git add -A
$ git commit
git commit には様々なオプションが存在するので、今回はよく使用するオプションを紹介します。
git commit のオプション
オプション | 意味 |
---|---|
-m | エディタを開かずにコミットメッセージを書くことができる |
-a | 「変更/削除」したファイルを自動的にステージングエリアに追加してコミットする |
-v | 変更した内容を確認しながらコミットすることができる |
--amend | 直前のコミットを取り消して、ステージングの内容を新しくコミットする |
git commit -m
-m
は --message
の省略形です。
このオプションはエディタを開かずにコミットメッセージを書くことができます。
$ git commit -m "コミットメッセージ"
上記のコマンドのようにすることで、エディタを開かずにメッセージを書けます。
また、複数行のメッセージを書きたい場合は以下のように -m オプションを複数使用することでメッセージを残せます。

git commit -a
-a
は --all
の省略形です。
「変更/削除」したファイルを自動的にステージングエリアに追加してコミットします。
-a オプションを使用すれば、 git add でステージングエリアに追加せずにコミットすることが可能ですが、「追加」ファイルはコミット対象にはなりません。
-a は -m オプションと一緒に使用することもできます。
$ git commit -am "ファイルの変更"
git commit -v
-v
は --verbose
の省略形です。
変更した内容を確認しながらコミットすることができます。
$ git commit test.txt -v

上記のように、エディタを開いた時にコミットされる内容の差分が表示されるので、変更内容を確認しながらコミットすることができます。
変更内容を確認しながらコミットできるので安全ですし便利なコマンドです。
git commit –amend
--amend
は、直前のコミットを取り消して、新しくコミットします。
直前のコミットメッセージを変えたいときなどに使用することが多いと思います。
--amend
を使用すると、エディタが開いて新しいコミットとしてメッセージを変えることができます。
$ git commit -m "ファイルの追加"
$ git commit --amend
$ git log
commit 138054e7be084a3faa1f29f677cfbc7919e2c7fd (HEAD -> master)
Author: yukimasa <[email protected]>
Date: Sat Nov 23 18:39:48 2019 +0900
ファイルの追加/変更
また、「複数の修正のうち、1つだけ修正を忘れてコミットをしてしまった」というような場合などで、もう1つコミットを作りたくない時にも使用できます。
新しくコミットをする際にステージングの内容もコミットするので、他の変更も追加したい時などに便利です。
今まで git reset や git rebase -i を使用していたのですが、git commit –amend を使う方が簡単でした!
以下は test.txt
の修正を忘れた時に、新しくコミットをする例です。
$ git commit
# 修正箇所を追加
$ git add test.txt
$ git commit --amend -m "ファイルの追加/変更"
修正した分をステージングに追加してから –amend を使用することで、直前のコミットを取り消して、ステージングの変更分も含めて新たにコミットします。
まとめ
以上が git commit についてでした。
今回紹介したオプション以外にもたくさん種類があるので、気になる方は公式ドキュメントを見てみてください!