はじめての Git 実習

GitBeginner
オンラインで実践に進む

はじめに

Git のエキサイティングな世界へようこそ!もしあなたが「過去に戻って作業のミスを修正できたらいいのに」と思ったことがあったり、プロジェクトの変更履歴を管理するのに苦労したことがあるなら、このツールは最高の贈り物になるでしょう。Git は、コードやドキュメントのための「タイムマシン」のようなものです。この実験が終わる頃には、あなたはそのタイムマシンを自由に操れるようになっているはずです!

Git について何も知らなくても心配いりません。最初の一歩から丁寧にガイドします。この実験を通じて、Git リポジトリの作成方法、変更の追跡方法、そしてコミット(保存)の方法を理解できます。これらは、世界中の開発者が素晴らしいソフトウェアを作るために毎日使っている、最も基本的で重要なスキルです。さあ、冒険を始めましょう!

秘密の実験室を作る

Git の操作に入る前に、まずは作業場所を用意しましょう。すべての実験が行われる「秘密の実験室」を作るようなイメージです。

ターミナルを開く

ターミナルを開き(見た目ほど怖くありませんので安心してください!)、以下の魔法の言葉を入力してください。

cd ~/project
mkdir my-time-machine
cd my-time-machine

それぞれのコマンド(呪文)の意味は以下の通りです。

  1. cd ~/project: プロジェクトフォルダへ移動します。
  2. mkdir my-time-machine: 「my-time-machine」という名前の新しいフォルダを作成します。
  3. cd my-time-machine: 作成した新しい秘密の実験室の中に入ります。

おめでとうございます!最初の Git プロジェクトのためのスペースが完成しました。なぜ専用のフォルダが必要なのでしょうか?プログラミングの世界では、作業を整理整頓しておくことが非常に重要だからです。プロジェクトが大きくなるにつれ、それぞれに専用の場所があることのありがたさを実感するはずです。

タイムマシン(Git リポジトリ)の起動

秘密の実験室ができたので、いよいよタイムマシンを組み立てましょう!プログラミングの世界では、このタイムマシンのことを「Git リポジトリ(Git repository)」と呼びます。

ターミナルで次のコマンドを入力してください。

git init

すると、次のようなメッセージが表示されるはずです。

Initialized empty Git repository in /home/labex/project/my-time-machine/.git/

すごい!あなた専用のタイムマシンが完成しました。でも、なぜコードにタイムマシンが必要なのでしょうか?

あなたが物語を書いているところを想像してみてください。違う結末を試したくなったり、お気に入りの段落をうっかり消してしまったりすることがあるかもしれません。Git がないと、「物語_完成.txt」「物語_完成_v2.txt」「物語_本当に本当に完成.txt」といったファイルが大量に増えてしまうことになります。心当たりはありませんか?

Git はこの問題を解決します。複数のファイルを作ることなく、作業のさまざまなバージョンを保存できるのです。過去のどのバージョンにも簡単に戻れますし、別の時間軸(これを「ブランチ」と呼びます)を作って新しいアイデアを試すこともできます。開発者が Git を愛用するのは、作業を失う恐怖を感じることなく、自由に試行錯誤できるからです。

タイムマシンの状態を確認する

タイムマシンが手に入ったので、今の状態を確認してみましょう。Git では git status というコマンドを使います。これはタイムマシンに「今、どんな状況?」と尋ねるようなものです。

試してみましょう。

git status

次のような表示が出るはずです。

On branch master

No commits yet

nothing to commit (create/copy files and use "git add" to track)

少し難しそうに見えるかもしれませんが、分解して説明します。

  • "On branch master": ブランチは「時間軸」のようなものです。「master」はプロジェクトのメインとなる時間軸を指します。
  • "No commits yet": コミット(commit)は、ビデオゲームの「セーブポイント」のようなものです。まだセーブポイントを一つも作っていないことを示しています。
  • "nothing to commit": まだファイルを作成していないため、Git が記録すべき変更が何もないという意味です。

「ファイルを保存するだけなのに、なぜこんな手順が必要なの?」と思うかもしれません。良い質問です!通常の保存とは異なり、Git はプロジェクトの複数のバージョンを時間の経過とともに保存できます。つまり、何かがうまくいかなくなっても、いつでも以前の状態に戻れるという安心感を持って、自由に実験ができるのです。プロジェクト全体に対して「無限の取り消し(Undo)」機能を持っているようなものです!

最初のファイルを作成する

では、タイムマシンで追跡するための対象を作ってみましょう。まずは簡単なメッセージを書いたファイルを作成します。

echo "Hello, Future Me" > message.txt

このコマンドは、中に「Hello, Future Me」というテキストが入った message.txt という新しいファイルを作成します。

内容を確認してみましょう。

cat message.txt

次のように表示されるはずです。

Hello, Future Me

素晴らしい!最初のファイルができました。しかし、ここからが Git の魔法の本番です。現時点では、このファイルはコンピュータ上に存在していますが、Git はまだそれを追跡(管理)していません。メモは書いたけれど、まだ「タイムカプセル(Git リポジトリ)」の中には入れていない状態です。

次のステップでは、Git がこの新しいファイルにどう反応するか、そしてどうやって変更の追跡を開始するかを見ていきます。ここが、単にファイルを保存するだけの操作と Git との大きな違いです。Git を使えば、「いつ」「誰が」「なぜ」変更したのかを正確に把握できるようになります。大きなプロジェクトに取り組むとき、それがどれほど役立つか想像してみてください!

再び状態を確認する

ファイルを作成したので、タイムマシンにどう見えているか聞いてみましょう。もう一度 git status コマンドを実行します。

git status

今度は、先ほどとは違う表示が出るはずです。

On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        message.txt

nothing added to commit but untracked files present (use "git add" to track)

面白いですね!Git は新しいファイルに気づきましたが、それを「untracked(追跡対象外)」だと言っています。これは Git の優れた点の一つです。フォルダ内のすべてのファイルを勝手に追跡することはありません。どの変更をプロジェクトの履歴に含めるかを、あなたが完全にコントロールできるのです。

「全部自動で追跡すればいいのに」と思うかもしれません。しかし、大きなプロジェクトを想像してください。個人的なメモや一時的なファイルなど、履歴に残したくないファイルもあるはずです。Git は重要なものだけを選んで追跡できるため、プロジェクトの履歴をきれいで意味のある状態に保つことができます。

次のステップでは、このファイルを追跡するように Git に指示します。ここから Git があなたの「スーパーパワー」のように感じられ始めるでしょう。最初のセーブポイントを作る準備です!

セーブポイントの準備

次に、message.txt を次のセーブポイント(Git の用語で「コミット」)に含める準備をします。これには git add コマンドを使います。

git add message.txt

このコマンドを実行しても何も出力されませんが、Git に message.txt の追跡を開始するように伝えたことになります。

状態がどう変わったか、もう一度確認してみましょう。

git status

次のように表示されるはずです。

On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   message.txt

見てください!Git がファイルを追跡し、コミットする準備が整いました。この「add(追加)」してから「commit(保存)」するという 2 段階のプロセスは、最初は少し手間に感じるかもしれませんが、実は Git の強力な武器の一つです。

タイムカプセルを準備しているところを想像してください。git add は「カプセルに何を入れるか決める」作業で、次のステップの「commit」は「カプセルに封をする」作業です。これにより、プロジェクトの履歴に残す内容を慎重に選ぶことができるのです。

この機能は、大規模なプロジェクトで非常に役立ちます。10 個のファイルを変更したけれど、今回はそのうちの 3 個だけを履歴に残したい、といったことが Git の「ステージングエリア(現在 message.txt が置かれている場所)」を使えば簡単に実現できます。

最初のセーブポイント(コミット)を作る

いよいよエキサイティングな瞬間です。最初のコミットを作成しましょう!コミットはタイムカプセルに封印をするようなものです。追跡対象となっているすべてのファイルの現在の状態を保存し、何を変更したのかを説明するメッセージを添えます。

コミットを作成するコマンドはこちらです。

git commit -m "Send a message to the future"

次のような出力が表示されるはずです。

[master (root-commit) a1b2c3d] Send a message to the future
 1 file changed, 1 insertion(+)
 create mode 100644 message.txt

おめでとうございます!最初の Git コミットが完了しました。プロジェクトの歴史の中に、いつでも戻ることができる「時点」を公式に保存したことになります。

これが Git の強力さの源です。各コミットは、その瞬間のプロジェクト全体の「スナップショット」です。これらのスナップショットを好きなだけ作成することで、プロジェクトの詳細な履歴を積み上げていくことができます。

学校のレポートを書いている場面を想像してください。普通の保存では最新版しか残りませんが、Git を使えば「初稿」「結論を追加」「導入部を修正」といったセーブポイントを個別に持てます。必要になれば、いつでもこれらの時点に戻ることができるのです!

タイムトラベルの記録を見る

最初のコミットが完了したので、プロジェクトの履歴を確認してみましょう。git log コマンドを使います。

git log

次のような内容が表示されるはずです。

commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (HEAD -> master)
Author: Your Name <your.email@example.com>
Date:   Mon Aug 7 10:00:00 2023 +0000

    Send a message to the future

このログには、いくつかの重要な情報が含まれています。

  • コミットの固有識別子(英数字の長い文字列)
  • 誰がコミットしたか(作成者)
  • いつコミットされたか(日時)
  • 私たちが書いたコミットメッセージ

このログはプロジェクトの年表のようなものです。コミットを重ねるごとにこのログに追記され、プロジェクトの完全な歴史が作られていきます。プロジェクトがどのように進化してきたかを理解したり、特定の変更がいつ行われたかを探したりする際に、非常に役立ちます。

q キーを押すとログ画面を閉じて、コマンドラインに戻ることができます。Git の全画面表示から抜け出したいときは、いつでも q を押せばよいことを覚えておいてください。

グループプロジェクトで協力している場面を想像してみてください。Git があれば、誰が、いつ、なぜその変更を行ったのかが一目瞭然になり、チームでの連携が格段にスムーズになります。これが、Git が世界中の開発者に使われている大きな理由の一つです。

まとめ

おめでとうございます、タイムトラベラー!最初の Git の冒険を無事に終えました。学んだ素晴らしい内容を振り返ってみましょう。

  1. git init を使って Git リポジトリ(タイムマシン)を作成する方法
  2. git status でリポジトリの状態を確認する方法
  3. ファイルを作成し、git add でコミットの準備をする方法
  4. git commit でコミット(セーブポイント)を作成する方法
  5. git log でプロジェクトの履歴を表示する方法

「なぜファイルを保存するのにこんなに苦労するの?」と思うかもしれません。Git がこれほどまでに強力な理由は以下の通りです。

  1. 詳細な履歴: プロジェクトの完全な歴史を保持できます。「何が」「いつ」「なぜ」変わったのかをすべて把握できます。
  2. 試行錯誤: 自由に実験ができます。元の作業を失うことを恐れずに、プロジェクトの異なるバージョンを試せます。
  3. 共同作業: チームで働く際、誰がどのような変更を行ったのかを簡単に共有・確認できます。
  4. バックアップ: すべての Git リポジトリは、その全履歴を含むプロジェクトの完全なバックアップになります。

これらは、開発者が素晴らしいソフトウェアを作るために毎日使っている基礎的な構成要素です。この旅を続ける中で、これらの基礎を土台にして、より複雑なプロジェクトを管理したり、他の人と協力したりする方法を学んでいくことになります。

誰もが最初は初心者です。どんなに経験豊富な開発者も、かつては今のあなたと同じ場所にいました。練習を続け、実験を繰り返し、そして何より楽しんでください!

LabEx の使い方についてさらに詳しく知りたい場合は、サポートセンター をご覧ください。また、LabEx についての紹介 ビデオ も視聴いただけます。

プログラミングとバージョン管理の世界への旅は、まだ始まったばかりです。「次の実験(Next Lab)」はすぐそこにあります。新しい Git のスーパーパワーを使って、どんな素晴らしいプロジェクトを作り上げるのか、楽しみですね。探索を続け、スキルを磨いていきましょう!