未来エンジニア養成所Blog

月単価180万以上のプログラミング講師がプログラミングを皆に楽しんでもらうための情報をお届けします。

【Git&GitHub】変更を記録(git commitコマンド)

title


変更を記録しよう

今回は、ステージに上げた変更をGitリポジトリに記録していきましょう。


ここで問題です。

変更を記録することをGitでは何というでしょうか。

これは何回も出て来たので簡単ですね。


正解は「コミット」と言います。


変更を記録することをGitではコミットと言います。

どのようなコマンドを使うかというと、「git commit」コマンドです。

$ git commit


「git commit」コマンドによってメッセージ付きで記録します。

メッセージ付きで記録する理由は、何のために変更したのかと言うのが後から振り返って分かるようにするためです。


記録する内容としてはファイルの「変更」や「新規作成」「削除」、そして1つのファイルだけではなく「複数ファイルの変更、作成、削除」も記録できます。


「git commit」コマンドにはいくつかオプションがあって、そのうち代表的な物を2つ紹介します。


1つめが「-m」オプションです。

「git commit -m '<メッセージ>'」と入力すると、メッセージ付きで変更を記録することができます。

$ git commit -m '<メッセージ>'


もうひとつのオプションが「-v」オプションです。

こちらは「git commit -v」と入力するとGitのエディタが立ち上がって、その際ファイルにどのような変更をしたのかという変更内容をそのエディタ上で確認することができます。

$ git commit -v


通常「git commit」と入力しただけだと、何のファイルを変更したのかという変更したファイル名までしか確認できません。

しかし「-v」オプションを付けると、そのファイルに対してどのような変更をしたのか、という変更内容も見ることができます。

コミットする前にもう一度変更内容をちゃんと確認してからコミットしたい場合は「-v」オプションを付けて下さい。


では「git commit」コマンドでしていることをイメージで押さえておきましょう。

「ステージ」の内容をスナップショットとしてリポジトリに記録していくのが「git commit」コマンドでした。

ステージからリポジトリに登録することです。


変更を記録する(コミット)


では、「git commit」の裏側で起こっていることを復習しておきましょう。


今の状況としてはワークツリーに「index.html」のファイルがあって、それを「git add」してインデックスに追加したところです。


ここから「git commit」をしていきます。

「git commit」をするとまず、「ツリー1」というツリーファイルが作成されます。

これはインデックスの内容を元に、「index.html」というファイルの中身は「圧縮ファイルA」ですよというファイル名とファイルの内容のマッピング情報を記録した物です。


ツリーファイルによりその時のスナップショットの状態が分かります。

ツリーを作成した後はコミットファイルを作成します。

今回は「コミット1」というファイルが作成されます。

コミットファイルには「ツリーの情報」「作成者」「日付」「コミットメッセージ」が記録されています。

今回ツリーの情報として「ツリー1」というふうに指定されています。


これにより、誰がいつ何のためにその変更をしたのかと言う事が分かります。


git commitコマンドの裏側で起こっていること


次にコミットメッセージの書き方について見ていきます。

コミットメッセージを書くコツは1つ。

分かりやすく書くことです。


簡単に書く時は変更内容の要点と理由を一行で簡潔に書きましょう。

正式に書く時は1行目に「変更内容の要約」を書き、2行目を改行し、3行目に「変更した理由」を書いていきます。


チームでコミットメッセージをちゃんと書いて開発していく時や、オープンソースにコミットする時はこのように書くことをお勧めします。


実際にやってみよう

ではターミナルを立ち上げて実際にコミットをしていきましょう。


「git_tutorial」のディレクトリに移動します。


移動したら「git commit -m 'Initial commt'」と入力しましょう。

今回は1回目のコミットと言う事で、「Initial commt」というメッセージにしてみましょう。

$ git commit -m 'Initial commt'
[main (root-commit) c9b5690] Initial commit
 1 file changed, 1 insertion(+)
 create mode 100644 index.html

これでコミットが完了しました。


参考図書



独学で挫折しそうになったら、オンラインプログラミングスクール
未来エンジニア養成所Logo



あわせて学習したい

phoeducation.work