プログラミング

Git実践① ファイルの変更をコミットしよう

広告:この記事にはアフィリエイトリンクを含みます。購入・契約により運営者に報酬が入る場合があります。掲載方針

Gitで履歴を残すまでを、保存・ステージ・コミットの違いから解説します。変更前後の確認、add後に編集した場合、初期設定、練習問題と解答も掲載します。

ファイル名を「最終版」「最終版2」「本当の最終版」と増やしたことはありませんか。どれを残せばいいのか、だんだん不安になりますよね。

Gitは、ファイルの変更履歴を記録する道具です。今回は練習用フォルダーで文章を1つ作り、「最初の内容」と「説明を追加した内容」を2つの履歴として残します。GitHubへの公開はまだしません。インターネットがなくてもできる範囲です。

今回覚える流れ

操作は「編集 → 確認 → 選ぶ → 記録」です。ただし、エディターの保存とGitの記録は同じではありません。

操作 何が変わるか
保存 パソコンのファイルが更新される
git add 次の履歴に入れる内容を選ぶ
git commit 選んだ内容を説明付きで履歴へ残す

コミットは、その時点の内容を履歴へ記録する操作です。記録された1件もコミットと呼びます。

git add で選んだ内容の待機場所をステージングエリアと呼びます。「次に記録する内容を確認して並べる場所」と考えると分かりやすいです。実物の別フォルダーが目の前にできるわけではありません。

リポジトリを作る

1. 練習用フォルダーを開く

大事な制作フォルダーではなく、新しい git-practice フォルダーを作り、VS Codeなどで開きます。ターミナルもそのフォルダーで開いてください。

ターミナルは、文字で操作を入力する画面です。現在の場所を作業ディレクトリと呼びます。コマンドは基本的にその場所を対象にするので、どのフォルダーにいるかを確認する習慣が大切です。

まずGitが使えるか調べます。

git --version

git version ... と表示されれば次へ進めます。見つからない場合はGit公式のインストール案内を確認し、インストール後にターミナルやエディターを開き直します。表示される番号は環境によって違います。

2. 履歴を管理する場所にする

空の練習フォルダーで実行します。

git init -b main

リポジトリは、Gitが履歴を管理する場所です。init は初期化、-b main は最初のブランチを main という名前にする指定です。ブランチの仕組みは次の記事で扱うので、今は現在の履歴の流れの名前と思ってください。

すでにGitで管理している制作フォルダーで、練習のつもりで実行しないようにします。新しいフォルダーに作った .git には履歴の管理情報が入るため、普通の不要ファイルとして削除しないでください。

3. コミットに残る名前を設定する

この練習用リポジトリで使う名前とメールアドレスを設定します。下の文字は自分が使う公開用情報へ置き換えてください。

git config user.name "自分の表示名"
git config user.email "自分の公開用メールアドレス"

これはGitHubへのログインではなく、コミットに記録する著者情報です。公開した履歴ではメールアドレスも見られることがあります。GitHubを使う予定なら、設定画面で案内される noreply アドレスを使えます。適当に作らず、自分のアカウントに表示されたものを確認します。

--global を付けると、ほかのリポジトリの既定値にもなります。今回は意図せずほかの作業へ影響しないよう、このリポジトリだけの設定にしています。

変更を確認する

エディターで README.md を作り、次を保存します。

# はじめてのプロジェクト

README はプロジェクトの説明によく使うファイル名です。.md はMarkdown形式で、先頭の # は見出しを表します。

次に状態を確認します。

git status

Untracked files の下へ README.md が出れば、ファイルはあるがGitがまだ追跡していない状態です。追跡は、Gitの管理対象として変更を扱うことです。

git status は状態を見るコマンドなので、繰り返してもファイルを変更しません。画面の説明が英語でも、ファイル名と Untracked、Changes to be committed などを拾えば状況を分けられます。

ステージしてコミットする

1. 今の内容を選ぶ

git add README.md
git status

今度は Changes to be committed に README.md が表示されます。「次のコミットに入る変更」です。

まとめてすべてを選ぶ書き方もありますが、初めはファイル名を指定する方が安心です。練習と関係ないファイルや秘密情報が混ざっていないかを確認できます。

2. 選んだ内容を読む

git diff --staged

diff(差分)は、前後で何が変わったかを表します。初回なら、新しく入れる見出しの行に + が付きます。この + はファイルの文字ではなく、表示上の「追加された行」という印です。

3. 説明を付けて記録する

git commit -m "READMEを追加"
git status

-m の後はコミットメッセージです。「更新」だけより「READMEを追加」の方が、後から見て意味を思い出せます。

成功するとコミットを識別する英数字などが表示されます。状態に working tree clean と出れば、今回の内容と比べて未記録の変更がない状態です。作業ツリーは、実際に編集しているファイル側のことです。

「clean=GitHubへ送信済み」ではありません。今はパソコン内の記録がそろっただけです。

addした後に編集するとどうなる?

ここが、最初に混乱しやすいところです。

  1. README.md に説明Aを書いて保存する
  2. git add README.md を実行する
  3. 説明をBへ変えて保存する
  4. git commit する

記録されるのは、原則としてaddした時点のAです。保存した最新のBが自動でステージへ入るわけではありません。

最新のBを記録したい場合は、もう一度 git add README.md を実行します。確認の使い分けは次のとおりです。

コマンド 比較する場所
git diff ステージと、現在のファイル
git diff --staged 直前のコミットと、ステージ

最初は「差分を見たのに何も出ない!」となることもあります。すでにステージ済みなら --staged 側を見ます。未追跡ファイルの内容は、通常の git diff だけでは出ない点にも注意してください。

履歴を見る

git log --oneline

a1b2c3d READMEを追加 のように、短いIDとメッセージが表示されます。IDは例なので、同じ番号にはなりません。

表示が1画面に収まらず閲覧モードになった場合は、q で戻れます。最近の1件の内容まで見たいなら次を使います。

git show --stat

これで、どのファイルがどれだけ変わったかを確認できます。履歴を残した直後に読むところまで行うと、「ちゃんと記録できた」が確かめられて安心です。

よくあるつまずき

「Author identity unknown」と出る

著者名とメールアドレスが未設定です。先ほどの git config を確認します。パスワードを入力する場面ではありません。

「not a git repository」と出る

Git管理のフォルダーではない場所で操作している可能性があります。現在のフォルダーを確認し、練習用の git-practice を開き直します。

「nothing to commit」と出る

記録対象がないという意味です。保存していない、すでに記録した、ステージしていないなどを git status で分けます。

パスワードなども記録してしまいそう

コミット前に差分を読みます。除外設定の .gitignore と秘密情報の扱いは、GitHubへ送る記事で説明します。履歴に残した後で消すだけでは、過去の記録から消えません。

練習:説明文を追加する

README.md に説明を1行追加し、2つ目のコミットを作ってください。最初の履歴が残っていることも確かめます。

模範解答

ファイルは次のようにします。

# はじめてのプロジェクト

Gitの基本操作を練習するプロジェクトです。

保存したら、次を順に実行します。

git status
git diff
git add README.md
git diff --staged
git commit -m "READMEに説明を追加"
git log --oneline

解説

git diff で追加した説明を確認し、add でその内容を選びます。diff --staged でも同じ追加を確認してから記録するので、「選び忘れ」と「余計な内容」を見つけられます。

履歴には「READMEに説明を追加」と「READMEを追加」の2件が残ります。上が新しいコミットです。ファイル名に最終版2を付けなくても、同じファイルの変化を順番にたどれます。

次はGit実践② ブランチを作って変更を分けるへ進みましょう。

図解で操作のつながりを整理したい場合

続きの練習は、このサイトの記事で無料で進められます。コミット・ブランチ・マージ・GitHubでの共同作業を1冊で見渡したい場合は、『図解即戦力 Git&GitHubのしくみと操作がこれ1冊でしっかりわかる教科書』が候補です。

出版社の目次では、Gitの基本概念からコミット、ブランチ、マージ、GitHubでのチーム開発へ進む構成を確認できます。この紹介は目次・書誌情報に基づいています。試し読みで図と操作説明の読みやすさを確かめてから選んでください。

参考資料

← 記事一覧へ戻る