Linux 環境でのローカル Git リポジトリの管理

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

はじめに

この実験では、Linux 環境でローカル Git リポジトリを管理するための基本的なコマンドを学びます。まず、git init を使用して新しいリポジトリを初期化し、git config でユーザーの識別情報を設定します。これらは、Git を使用してバージョン管理を行うあらゆるプロジェクトにおいて、不可欠な最初のステップとなります。

初期設定に続いて、Git のコアワークフローを実践します。これには、新しいファイルの作成、git add による追跡対象(ステージング)への追加、そして git commit によるリポジトリ履歴への保存が含まれます。その後、ファイルを修正して変更をコミットし、git log コマンドを使用してプロジェクトの変遷を理解するために、完全なコミット履歴を確認する方法を学びます。

Git リポジトリの初期化とユーザー設定の構成

このステップでは、新しい Git リポジトリを初期化し、ユーザー情報を設定することから始めます。Git リポジトリとは、Git がプロジェクトファイルの変更を追跡するためのディレクトリのことです。リポジトリの初期化は、Git でバージョン管理を開始するための第一歩です。

現在の作業ディレクトリは /home/labex/project です。このディレクトリを使用して Git リポジトリを作成します。

まず、git init コマンドを実行します。このコマンドは、現在のディレクトリに新しく空の Git リポジトリを作成します。具体的には、リポジトリに必要なすべてのファイルを含む .git という名前の隠しサブディレクトリを作成することでこれを行います。

git init

空のリポジトリが初期化されたことを確認する出力が表示されるはずです。

Initialized empty Git repository in /home/labex/project/.git/

リポジトリが作成されたので、次のステップはユーザーの識別情報を設定することです。Git はこの情報を使用して、作成するすべてのコミットにあなたの名前とメールアドレスを関連付けます。これは、共同プロジェクトにおいて「誰がどの変更を行ったか」を追跡するために非常に重要です。

ここでは、--global フラグを付けて git config コマンドを使用します。--global フラグを使用すると、この設定はこのシステム上の labex ユーザーが扱うすべての Git リポジトリに適用されます。

以下のコマンドを実行して、ユーザー名とメールアドレスを設定してください。この実験では、ユーザー名に labex、メールアドレスに labex@example.com を使用します。

git config --global user.name "labex"
git config --global user.email "labex@example.com"

これらのコマンドは、成功しても出力は表示されません。設定が正しく行われたか確認するために、ユーザーの Git 設定一覧を表示できます。

git config --list

出力には、先ほど設定した user.nameuser.email を含む設定の一覧が表示されます。

user.name=labex
user.email=labex@example.com
...

これで、Git リポジトリの初期化とユーザー識別情報の設定が完了しました。ファイルの追加と変更の追跡を開始する準備が整いました。

最初のファイルの作成と git add および git commit によるコミット

このステップでは、最初のファイルを作成し、それを Git リポジトリにコミットします。コミットとは、ステージングされた変更のスナップショットをリポジトリの履歴に保存するプロセスのことです。このプロセスには、主に git addgit commit の 2 つのコマンドが関わります。

まず、シンプルな README.md ファイルを作成しましょう。これは、プロジェクトに関する情報を提供する、プロジェクトで一般的なファイルです。echo コマンドを使用してファイルを作成し、テキストを追加します。すべてのコマンドは、現在のディレクトリ /home/labex/project で実行してください。

echo "Hello, Git" > README.md

ファイルを作成したら、git status コマンドを使用してリポジトリの状態を確認できます。このコマンドは、作業ディレクトリとステージングエリア(インデックス)の状態を表示します。

git status

出力は以下のようになります。

On branch master

No commits yet

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

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

この出力は、README.md が「追跡されていないファイル(untracked file)」であることを示しています。これは、Git がファイルの存在を認識しているものの、まだリポジトリのバージョン履歴の一部にはなっていないことを意味します。

新しいファイルの追跡を開始するには、そのファイルをステージングエリアに追加する必要があります。ステージングエリアは、コミットする前に一連の変更を準備するための中間ステップです。git add コマンドを使用して README.md をステージングします。

git add README.md

このコマンドは出力を生成しません。何が起きたかを確認するために、もう一度 git status を実行します。

git status

出力が変化しました。

On branch master

No commits yet

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

ファイルが「コミット予定の変更(Changes to be committed)」の下にリストされました。これは、ファイルがステージングエリアにあり、次のコミットの準備ができていることを意味します。

最後に、このスナップショットをプロジェクトの履歴に保存するために、git commit コマンドを使用します。各コミットには、-m フラグを使用して説明的なメッセージを含めるのがベストプラクティスです。このメッセージは、どのような変更が行われたかを説明するものです。

git commit -m "Initial commit: Added README.md"

コマンドを実行すると、コミットの概要を示す確認メッセージが表示されます。

[master (root-commit) <commit_hash>] Initial commit: Added README.md
 1 file changed, 1 insertion(+)
 create mode 100644 README.md

最初のコミットに成功しました!README.md ファイルは、正式に Git リポジトリの履歴の一部となりました。

ファイルの修正と変更のコミット

このステップでは、既存のファイルへの変更を追跡する方法を学びます。バージョン管理の主な機能は、ファイルが時間の経過とともにどのように進化するかを確認できることです。これは、ファイルが更新されるたびに変更をコミットすることで実現されます。

引き続き /home/labex/project ディレクトリにある README.md ファイルを操作します。新しいテキスト行を追加してみましょう。再び echo コマンドを使用しますが、今回はファイルを上書きするのではなく、内容を追記する >> 演算子を使用します。

echo "This is a new line." >> README.md

ファイルが修正されたので、git status でリポジトリの状態を確認しましょう。

git status

Git は README.md ファイルが修正されたことを報告します。

On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
 modified:   README.md

no changes added to commit (use "git add" and/or "git commit -a")

出力では、「コミット用にステージされていない変更(Changes not staged for commit)」の下に modified: README.md と表示されています。これは、Git が変更を検出したものの、まだ次のコミットのためのステージングエリアに追加されていないことを意味します。

新しいファイルの場合と同様に、修正をステージングするには git add を使用する必要があります。これにより、これらの特定の変更を次のコミットに含めたいことを Git に伝えます。

git add README.md

このコマンドも出力は表示されません。変更がステージングされたことを確認するために、もう一度 git status を実行しましょう。

git status

出力には、ファイルが「コミット予定の変更」の下に表示されます。

On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
 modified:   README.md

変更がステージングされたので、リポジトリの履歴にコミットできます。更新内容を説明する明確なメッセージを付けて git commit を実行します。

git commit -m "Added a new line to README.md"

コミットの確認メッセージが表示されます。

[master <commit_hash>] Added a new line to README.md
 1 file changed, 1 insertion(+)

これで、ファイルの修正と変更のコミットに成功しました。この「修正、ステージング、コミット」というワークフローは、Git を使用する際に繰り返し行う基本的なサイクルです。

git log によるコミット履歴の確認

最後のステップでは、リポジトリのコミット履歴を確認する方法を学びます。git log コマンドは、これまでに行われたすべてのコミットを時系列順に表示できる強力なツールです。これは、プロジェクトがどのように進化してきたかを理解するために不可欠です。

/home/labex/project ディレクトリから、git log コマンドを実行します。

git log

このコマンドは、作成したコミットの詳細なリストを表示します。最新のコミットが最初に表示されます。出力は以下のようになります。

commit <commit_hash_2> (HEAD -> master)
Author: labex <labex@example.com>
Date:   <commit_date_2>

    Added a new line to README.md

commit <commit_hash_1>
Author: labex <labex@example.com>
Date:   <commit_date_1>

    Initial commit: Added README.md

各コミットの情報について解説します。

  • commit: コミットの識別子として機能する、一意の 40 文字の SHA-1 ハッシュ値です。
  • Author: Git の設定に基づいた、コミットを行った人の名前とメールアドレスです。
  • Date: コミットが行われた日時を示すタイムスタンプです。
  • コミットメッセージ: インデントされたテキストは、-m フラグで指定した、コミットの目的を説明するメッセージです。

ログはページャープログラム(less など)で表示されます。矢印キーを使用して上下にスクロールできます。ログ表示を終了してターミナルのプロンプトに戻るには、q キーを押してください。

コミット履歴をよりコンパクトに表示するには、--oneline フラグを使用できます。これは、概要を素早く把握するのに便利です。

git log --oneline

出力は非常に短くなり、各コミットについてコミットハッシュとコミットメッセージだけが 1 行で表示されます。

<short_hash_2> (HEAD -> master) Added a new line to README.md
<short_hash_1> Initial commit: Added README.md

おめでとうございます!Git リポジトリの初期化、ファイルの追加とコミット、そしてプロジェクト履歴の確認という基本的なワークフローを習得しました。

まとめ

この実験では、Linux 環境でローカル Git リポジトリを管理するための基本的な手順を学びました。まず、git init コマンドを使用してプロジェクトディレクトリに新しいリポジトリを初期化しました。初期化に続いて、将来のすべてのコミットが正しく帰属されるように、git config --global コマンドを使用してユーザー名やメールアドレスなどの重要なユーザー設定を構成しました。その後、新しいファイルの作成、git add による次のコミットへのステージング、そして git commit を使用したリポジトリ履歴への変更の永続的な記録を通じて、バージョン管理のコアワークフローを実践しました。

さらに、変更を作成して追跡する反復プロセスを練習しました。これには、既存のファイルを修正し、新しいバージョンを保存するために git addgit commit によるステージングとコミットのサイクルを繰り返す作業が含まれます。最後に、git log コマンドを使用してプロジェクトの履歴を確認する方法を学びました。このコマンドは、一意の識別子、作成者、日付、コミットメッセージを含むすべてのコミットを時系列順に表示し、時間の経過とともにリポジトリに加えられた変更の明確な概要を提供します。