gitでconfigファイルを管理する

メソ
2025-10-20
2025-10-20

ミドルウェア等のconfigファイルを更新した際、いつ変更したのか、どこを変更したのかを残すために日付つきのファイル名でコピーファイルを作成することがあります。

-rw-r--r-- 1 root root 12005  2月 14  2025 20250214_httpd.conf
-rw-r--r-- 1 root root 12017  2月 14  2025 httpd.conf

このようなconf ファイルの差分管理をgitでができるのではないかと思ったので、試してみます。
今回は1人で作業する想定ですので手短に、confファイルのあるサーバー(ローカル)にgitをインストールして更新履歴を残していく形を取ります。

gitのセットアップ

gitをインストール
dnf install git
インストールの確認
git --version
git version 2.47.3

gitのセットアップ

初期設定を行う

ユーザー名とメールアドレスを登録しておきます。

#ユーザー名の登録
git config --global user.name "naki_usagi"

#メールアドレスの登録
git config --global user.email nakiusagi@mailaddress

ワークツリーを作成

履歴管理のためのリポジトリを格納する場所として、ワークツリーを作成します。

mkdir /conf_backup
ディレクトリを初期化する

作成したワークツリーに移動し、初期化を行います。これにより、リポジトリ(.gitファイル)が作成されて差分管理が可能になります。

cd /conf_backup
git init

confファイルのコミット

初回コミット

gitに登録できるのはワークツリー内のファイルが対象となります。今回はapacheの設定ファイルを管理するため、一旦ワークツリーにconfファイルをコピーしてからコミットします。

#ワークツリーへのコピー
cp /etc/httpd/conf/httpd.conf /conf_backup/httpd.conf

#ファイルをインデックスへ登録
git add httpd.conf
#コメントを追加してコミット
git commit -m "new httpconfig"
更新後のファイルをコミット

/etc/httpd/conf/httpd.confの内容を更新した際も、初回と同様にワークツリーへのファイルコピーとコミットを行います。

cp /etc/httpd/conf/httpd.conf /conf_backup/httpd.conf
git add httpd.conf

git commit -m "chenge DocumentRoot"
変更履歴を確認

これまでコミットした内容のログを確認すると、いつコミットしたか、どんなコメントが残っているか等を確認することができます。
また、初期設定時に登録したユーザー情報も表示されていることがわかります。

$ git log

commit 9ba311eea2ccbadb5425a9046d53ebf6a8a66cec (HEAD -> master)

Author: naki_usagi <nakiusagi@mailaddress>
Date:   Wed Oct 15 15:48:57 2025 +0900

    chenge DocumentRoot

commit aeff62aed81a7b0ee20a1585a0ab2dca96b686f9
Author: naki_usagi <nakiusagi@mailaddress>
Date:   Wed Oct 15 15:47:17 2025 +0900

    new httpconfig
切り戻し

更新したファイルを切り戻したくなった場合は、checkoutオプションでワークツリーにコピーして上書きすることで、コミット済みのファイルを呼び出すことができます。

#呼び出したいコミット済みファイルのID(左端)を確認
git log --oneline
b163645 (HEAD -> master) chenge DocumentRoot
bbeb25e new httpconfig

#確認したIDを引数に入れてワークツリー内にあるhttpd.confに上書きする
git checkout bbeb25e -- ./httpd.conf

まとめ

configファイルのバックアップにgitを使うメリットとして、初期設定時にユーザー情報を登録するため、ログからも分かるように誰がいつどのような操作をしたのか残すことが可能になります。

デメリットとして、ワークツリー内にコミットファイルを置いておかないといけないため、ディレクトリ構成を工夫するか、コミット前にワークツリー内に更新用ファイルを置いておくなど、一工夫が必要になりそうです。