Git による設定ファイルの管理

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

はじめに

Linux の管理者は、頻繁に設定ファイルを編集します。Git を使用すると、いつ、何が、なぜ変更されたのかを記録できるため、非常に便利です。本格的なインフラストラクチャのワークフローが必要ない場合でも、小さな Git リポジトリを作成しておけば、設定ファイルを編集する前後の変更を追跡するのに役立ちます。

この実験では、/home/labex/project 内にある app.conf という小さな設定ファイルを管理します。Git リポジトリの初期化、ローカルの作成者情報の構成、最初のコミットの作成、ファイルの編集、差分の確認、そして 2 回目のコミット作成を行います。この実験を通じて、Git の履歴を信頼できる設定変更の記録として活用する方法を学びます。

設定ファイルの確認

このステップでは、Git で管理する対象のファイルを確認します。リポジトリを作成する前に、どのファイルが重要であり、現在の内容がどうなっているかを把握しておきましょう。

LabEx のプロジェクトディレクトリに移動します。

cd /home/labex/project

設定ファイルの一覧を表示します。-l オプションを使用すると、サイズ、所有者、権限などのメタデータを確認できます。

ls -l app.conf

ファイルの内容を読み取ります。この設定ファイルは、Linux アプリケーションの設定で一般的な key=value 形式のシンプルな行で構成されています。

cat app.conf

log_level=info と表示されているはずです。後ほどこの設定のみを変更することで、Git の差分(diff)を分かりやすく確認します。

ローカル Git リポジトリの初期化

このステップでは、/home/labex/project を Git リポジトリに変換します。Git リポジトリは、履歴を隠しディレクトリである .git 内に保存します。また、コミットを作成するには、作成者の名前とメールアドレスの設定が必要です。実際の業務ではグローバルに設定することもありますが、この実験ではこのリポジトリ専用の ID を設定する方が安全です。

リポジトリを初期化します。-b main オプションを指定することで、初期ブランチ名を明示的に main とし、デフォルトブランチに関する警告が表示されるのを防ぎます。

git init -b main

ローカルの作成者情報を設定します。--local スコープを指定することで、これらの値はこのリポジトリ内でのみ有効になります。3 つ目のコマンドは、この実験環境のターミナルで見やすくするために、Git のカラー出力を無効化しています。

git config --local user.name "LabEx Learner"
git config --local user.email "learner@example.com"
git config --local color.ui false

git status --short を実行します。Git はファイルを見つけていますが、まだ管理対象(追跡)していないため、未追跡(untracked)として表示されます。短いステータス出力において、?? は未追跡のファイルを意味します。

git status --short

初期設定のコミット

このステップでは、最初のコミットを作成します。ここで理解しておくべき Git の主要な領域は、「ワーキングツリー」と「ステージングエリア」の 2 つです。ワーキングツリーは、実際にファイルを見て編集する場所です。ステージングエリアは、次のコミットに含める変更を準備する場所です。

設定ファイルのみをステージングします。学習中は git add . を避けてください。意図しないファイルまで誤ってステージングしてしまう可能性があるためです。

git add app.conf

再度ステータスを確認します。A は、ファイルが新規ファイルとしてステージングされたことを意味します。

git status --short

分かりやすいメッセージを付けて最初のコミットを作成します。

git commit -m "Track initial app configuration"

最近の履歴を確認します。--oneline を使うと出力をコンパクトにまとめられます。--no-pager オプションは、対話型ビューアを開かずに、ターミナルに直接ログを出力します。

git --no-pager log --oneline

設定変更の確認とコミット

このステップでは、設定を編集し、コミットする前に変更内容を確認します。これは設定管理における Git の重要な習慣です。つまり、「的を絞った変更を行い、差分を確認し、意図を説明するメッセージと共にコミットする」という流れです。

log_level を info から debug に変更します。sed -i コマンドを使用してファイルを直接編集します。パターンは ^ で始まり $ で終わるように指定しているため、log_level=info という行全体のみが変更されます。

sed -i 's/^log_level=info$/log_level=debug/' app.conf

コミット済みのバージョンと現在のワーキングツリーの差分を表示します。--no-pager を使用して、ターミナルに直接差分を表示させます。

git --no-pager diff -- app.conf

差分には、1 行が削除され、1 行が追加されたことが表示されるはずです。

-log_level=info
+log_level=debug

変更をステージングしてコミットします。

git add app.conf
git commit -m "Enable debug logging"

再度、履歴をコンパクトに表示します。これで 2 つのコミットが表示されるはずです。

git --no-pager log --oneline

最後に、app.conf に関してワーキングツリーがクリーン(変更なし)であることを確認します。

git status --short app.conf

まとめ

Linux の設定管理における Git の基本的な操作を練習しました。設定ファイルの確認、リポジトリの初期化、ローカルの作成者情報の設定、ステータスの確認、特定のファイルのステージング、最初のコミットの作成、差分の確認、そして設定変更のコミットを行いました。これらの習慣を身につけることで、ファイルを闇雲に編集するのではなく、設定変更の内容を理解し、必要に応じて以前の状態に復元できるようになります。