git commit コマンドは、Gitを使用する際に必ず使用するコマンドの1つです。
そこで今回は、commitコマンドを使用して変更内容をコミットする方法や、間違えた場合の修正方法などについて解説していきたいと思います。
git commitとは?
git commit は、ファイルの追加や変更内容をリポジトリに反映させるためのコマンドです。
Gitを使用してファイルの更新状態を管理する場合に、ファイルの変更内容が自動でリポジトリに反映されることはないため、このコマンドを使用して更新する必要があります。
同じく、リポジトリにファイルの変更内容を反映させるためのコマンドである pushコマンドがありますが、こちらはローカルリポジトリの内容をリモートリポジトリにアップロードするためのコマンドになります。
一方、commitコマンドはローカルリポジトリ内で使用します。
ファイルの変更内容をまず commitコマンドでローカルリポジトリに反映し、その後に pushコマンドでリモートリポジトリにアップロードするという流れです。
ファイルの変更だけして コミットをし忘れてしまうということは、特に初心者にはありがちなミスのため、追加や変更の際には必ず commitコマンドを使用するということを覚えておきましょう。/2
git commitの使い方
それでは、git commitコマンドの具体的な使用方法について見ていきましょう。
今回は、実際にローカルリポジトリを作成して、ファイルをコミットするところまでを通して解説していきたいと思います。
まずは、ローカルリポジトリを作成するためのディレクトリと、リポジトリにコミットするファイルを用意します。
ディレクトリの作成はmkdirコマンド、コミットするファイルの作成は touchコマンドで実行できます。
$ mkdir sampleGit
$ cd sampleGit
$ touch sampleCommit.txt
ディレクトリやファイルの準備が完了したら、次に git init コマンドでローカルリポジトリを作成しましょう。
$ git init
このコマンドによってリポジトリが初期化され、Gitによるバージョン管理ができるようになります。
具体的には、ディレクトリ内に 「.git」 というサブディレクトリが作られ、その中にリポジトリに必要なすべてのファイルが格納されます。
そのため、ローカルリポジトリの削除を行いたい場合は、このディレクトリを破棄することで削除が可能です。
リポジトリの作成が完了したら、実際にファイルをコミットしてみましょう。
更新内容をリポジトリに反映させる際は、commitコマンドを使用する前に、git add コマンドでファイルをインデックスに追加する必要があります。
$ git add sampleCommit.txt
インデックスとは、コミットしたいファイルを選別して保管しておくための待機スペースです。
実際の開発では様々なファイルを同時に編集することが多々あるため、リポジトリに反映したい内容だけをコミットするために、addコマンドで追加や更新を行うファイルを選別します。
$ git status
【実行結果】
On branch master
No commits yet
Changes to be committed:
(use “git rm —cached <file>…” to unstage)
new file: sampleCommit.txt
リポジトリの管理対象に新しく加えるファイルとして、sampleCommit.txtが追加されているのが分かりますね。
ファイルが無事に追加されていることを確認したら、commitコマンドでリポジトリに反映しましょう。
$ git commit -m “初回コミット”
-m オプションを使用すると、コミットと同時にコミットメッセージを記述することができます。
オプションを付けずに git commit のみで実行した場合は、テキストエディタが開かれます。
ファイルを指定してコミットする
commitコマンドでは、ファイル名を指定することで一部のファイルのみをコミットすることもできます。基本的に、インデックスに追加された全てのファイルをコミットしますが、ていましたが一部の変更したファイルのみコミットしたい場合は、引数にファイルを指定することで対象のファイルのみコミットすることができます。
$ git commit ファイル名
コマンドを実行すると、エディタが起動しますのでコミット内容を入力します。先述したようにコミットと同時にコメントを付けたい場合は「-m」オプションを指定します。
$ git commit -m “コメント内容” ファイル名
変更内容を全て即座にコミットする
先ほどは、全てのファイルをまとめてインデックスに追加する方法を解説しましたが、commitコマンドに「-a」 オプションを追加することで、即座に変更内容を反映させることもできます。
$ git commit -a
-aオプションを使用すると、変更された内容全てが自動でインデックスに追加され、そのまま続けてコミットが行われます。
addコマンドを省略することができるため、修正内容が保証されている場合に使用すると便利です。
ただし、新規ファイルに関しては -aオプションでコミットすることはできないため、事前にaddコマンドでインデックスに追加しておく必要があります。
実行したコミットを取り消す
「コミットの実行時に、反映する変更内容やコミットメッセージをミスしてしまった」 というケースも中には存在するかと思います。
その場合に使用可能な、実行済みのコミット内容を取り消す方法について、順に解説していきたいと思います。
直前のコミットだけを取り消す
コミット内容を取り消す際は、git reset コマンドを使用します。
直前のコミットを取り消す場合は、次のように softオプションを付けることで取り消しが可能です。
git reset --soft HEAD^
このコマンドを実行すると、直前のコミットが取り消され、変更したコミット内容がインデックスへと戻されます。gitのv1.8.5からは、「HEAD」 を 「@」 に置き換えることもできます。
git reset --soft @^
また、以下のコマンドを使用すると、直前のコミット内容に上書きする形でコミットすることができます。
git commit --amend
コミットメッセージを変更したい場合などによく使用される方法です。
-mオプションを付けた場合は記述した内容にメッセージが置き換えられ、付けなかった場合には修正前のコミットメッセージが入力された状態でテキストエディタが開かれます。
コミットと同時にファイルの変更内容も取り消す
コミット内容を取り消す際は、git reset コマンドを使用します。
直前のコミットを取り消す場合は、次のように softオプションを付けることで取り消しが可能です。
git reset --soft HEAD^
このコマンドを実行すると、直前のコミットが取り消され、変更したコミット内容がインデックスへと戻されます。
gitのv1.8.5からは、「HEAD」 を 「@」 に置き換えることもできます。
git reset --soft @^
また、以下のコマンドを使用すると、直前のコミット内容に上書きする形でコミットすることができます。
git commit --amend
コミットメッセージを変更したい場合などによく使用される方法です。
-mオプションを付けた場合は記述した内容にメッセージが置き換えられ、付けなかった場合には修正前のコミットメッセージが入力された状態でテキストエディタが開かれます。
特定のコミットを取り消す
直前のコミット内容に限らず、特定のコミットを指定して、それ以降の内容を取り消すこともできます。
過去のコミットを指定する場合は、「HEAD~{n}」 の形式で記述します。
git reset --soft HEAD~3
もしくは、ハッシュ値を使用して指定することも可能です。
ハッシュ値とは、コミット時に作成される英数字から成る値のことを言います。
この値は、他のハッシュ値と被ることがないよう、各コミットごとに一意の値が作られるため、ハッシュ値を使用してどのコミットであるかを判別することができるようになっています。
git log コマンドでログを表示すると、各コミット内容の上部に、以下のような形式でハッシュ値が書かれています。
【例】
commit c6d6659b89d0e1443cfb1979fee872638cb81807 (HEAD -> main)
commit の後に続く英数字の羅列がハッシュ値です。
また、以下のコマンドでより簡潔に表示することもできます。
git log --oneline
この場合には、短縮ハッシュ (先頭の7文字) が表示されます。
ハッシュ値の指定は、基本的にこの短縮ハッシュで問題ありません。
なお、コミット内容を既にリモートリポジトリに pushしている場合は、resetコマンドではなく revertコマンドを使用するようにしましょう。
git revert ハッシュ値
resetコマンドの場合、コミット内容の取り消しと同時に履歴も削除されてしまうため、pushした後に取り消すと、リモートリポジトリとの履歴にずれが生じて新たに pushすることができなくなってしまいます。
revertコマンドの場合は変更内容のみが取り消され、履歴は残ったままとなるため、push済みの内容を取り消したい場合は revertコマンドを使用しましょう。
まとめ
いかがでしたか?今回は、git commit の使い方について解説しました。
Gitを活用する上では必須のコマンドとなるため、しっかりと覚えておきましょう。
Gitの勉強方法は?
書籍やインターネットで学習する方法があります。昨今では、YouTubeなどの動画サイトやエンジニアのコミュニティサイトなども充実していて多くの情報が手に入ります。
そして、より効率的に知識・スキルを習得するには、知識をつけながら実際に手を動かしてみるなど、インプットとアウトプットを繰り返していくことが重要です。特に独学の場合は、有識者に質問ができたりフィードバックをもらえるような環境があると、理解度が深まるでしょう。
ただ、Gitに限らず、ITスキルを身につける際、どうしても課題にぶつかってしまうことはありますよね。特に独学だと、わからない部分をプロに質問できる機会を確保しにくく、モチベーションが続きにくいという側面があります。独学でモチベーションを維持する自信がない人にはプログラミングスクールという手もあります。費用は掛かりますが、その分スキルを身につけやすいです。しっかりと知識・スキルを習得して実践に活かしたいという人はプログラミングスクールがおすすめです。
プログラミングスクールならテックマニアがおすすめ!

ITスキル需要の高まりとともにプログラミングスクールも増えました。しかし、どのスクールに通うべきか迷ってしまう人もいるでしょう。そんな方にはテックマニアをおすすめします!これまで多くのITエンジニアを育成・輩出してきたテックマニアでもプログラミングスクールを開講しています。
<テックマニアの特徴>
・たしかな育成実績と親身な教育 ~セカンドキャリアを全力支援~
・講師が現役エンジニア ~“本当”の開発ノウハウを直に学べる~
・専属講師が学習を徹底サポート ~「わからない」を徹底解決~
・実務ベースでスキルを習得 ~実践的な凝縮カリキュラム~
このような特徴を持つテックマニアはITエンジニアのスタートラインとして最適です。
話を聞きたい・詳しく知りたいという方はこちらからお気軽にお問い合わせください。