ファイルをコミットする

Gitリポジトリにファイルを追加し、コミットする方法を学びましょう。

コミットとは?

コミットとは、Gitリポジトリに変更を記録することです。
コミットを行うことで、ディレクトリやファイルの変更履歴をGitのリポジトリに保存します。

Gitでは変更履歴であるコミットを何回も積み重ねていくことになります。

ファイルをコミットするための準備

Gitリポジトリにファイルを追加して、コミットする手順を説明します。
コミットするための準備として、ファイルを作成しましょう。

前回のレクチャーでgit-practiceというディレクトリを作成し、Gitリポジトリを初期化しました。

カレントディレクトリがgit-practiceであることを確認してください。

Terminal window
pwd

次のように表示されれば、カレントディレクトリはgit-practiceです。

Terminal window
/home/username/git-practice

次に、git-practiceディレクトリ内に新しいファイルを作成します。

Terminal window
echo "Hello, Git!" > hello.txt

このコマンドは、hello.txtというファイルを作成し、その中に「Hello, Git!」というテキストを書き込みます。

Gitの状態を確認する

次に、Gitの状態を確認します。
Gitの状態を確認するには、git statusコマンドを使用します。

Terminal window
git status

次のように表示されれば、hello.txtファイルが新規作成され、まだコミットされていないことがわかります。

Terminal window
git status
On branch main
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
hello.txt
nothing added to commit but untracked files present (use "git add" to track)

Gitの3つのステージ

コミット、つまりリポジトリに保存する前にGitの3つのステージ(状態)について学びましょう。

GitはGoogleスプレッドシートのように自動保存されたり、エクセルのように保存ボタンを押すと保存されるわけではありません。

Gitでは、ファイルの状態は以下の3つのステージに分かれています。

  1. ワーキングツリー
    • 作業中のファイルが存在する場所です。
    • ここでは、hello.txtファイルが作成されている状態です。
  2. ステージングエリア
    • コミットするためにファイルを一時的に保存する場所です。
    • git addコマンドでファイルをステージングエリアに追加します。
  3. リポジトリ
    • コミットされたファイルが保存される場所です。
    • git commitコマンドでステージングエリアのファイルをリポジトリに保存します。

Gitの3つのステージ

つまり、Gitでコミット(変更履歴を記録)するには、ステージングエリアを経由する必要があります。
ステージングエリアがあることで、ワーキングツリー内の必要のないファイルを含めずにコミットを行うことができます。

ステージングエリア

ファイルをステージングエリアに追加する

Gitの3つのステージを理解したところで、実際にファイルをコミットしてみましょう。

現状は次のような状態です。

Gitの状態

ワーキングツリーにあるhello.txtファイルをステージングエリアに追加するために、
git addコマンドを使用します。

Terminal window
git add hello.txt

git addコマンドでhello.txtファイルをステージングエリアに追加しました。

ステージングエリア

git statusコマンドを実行して状態を確認してみましょう。

Terminal window
git status

次のように表示されれば、hello.txtファイルがステージングエリアに追加されたことがわかります。

Terminal window
git status
On branch main
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: hello.txt

ファイルをコミットする

ステージングエリアに追加したファイルをリポジトリにコミットするために、git commitコマンドを使用します。

Terminal window
git commit --message "hello.txtを追加"

--messageオプションは、コミットメッセージを指定するためのものです。
--message-mと省略して書くこともできます。

つまり、次のように書いても同じです。

Terminal window
git commit -m "hello.txtを追加"

Gitではリポジトリにコミットする際に、変更内容を説明するメッセージを付けることができます。
コミットメッセージは、後で変更履歴を確認する際に役立ちます。

コミットが成功すると、次のようなメッセージが表示されます。

Terminal window
git commit -m "hello.txtを追加"
[main (root-commit) a6ab34c] hello.txtを追加
1 file changed, 1 insertion(+)
create mode 100644 hello.txt

これで、hello.txtファイルがリポジトリにコミットされました。

コミットしたことで3つのステージは次のように変化します。

コミット

git statusコマンドを実行して状態を確認してみましょう。

Terminal window
git status

次のように表示されれば、コミットが成功し、ワーキングツリーはクリーンな状態になっています。

Terminal window
On branch main
nothing to commit, working tree clean

これで、hello.txtファイルがリポジトリにコミットされ、変更履歴が保存されました。