[2026-01-21 修正] 「初回手順」の【手順7】に追記し、また、「運用手順」の順序と説明文を修正しました (コマンド部分に修正はありません)。
Claude Code 設定ファイルなどの個人設定ファイルを Git によって複数マシン間で同期するのを支援してくれるツール chezmoi の基本的な使い方を記します。
具体的に、chezmoi は「個人設定ファイルを一箇所に集めて Git リポジトリにプッシュする」「Git リポジトリからプルしてローカルとの差分確認 / 反映する」のに便利なコマンドを提供してくれます (さらに環境ごとの細かい差異や秘密情報を扱う仕組みもありますがこの記事ではそこまでやりません)。
Claude 関連に限らず複数マシンで同期したい設定ファイルが多い方には、chezmoi は単一バイナリで様々な OS に対応しており、構成とコマンドもわかりやすいので便利なのではないかと思います。設定ファイル管理リポジトリは例えば以下のようになります。
https://github.com/CookieBox26/dotfiles
導入
Claude Code を使用していると、別の PC や仮想マシンに以下などの個人設定ファイルを手軽に同期する仕組みがほしくなると思います。
~/
├─ .claude/
│ ├─ settings.json # 全プロジェクト共通の権限・フック設定
│ ├─ CLAUDE.md # 全プロジェクト共通のシステムプロンプト
│ └─ commands/*.md # カスタムスラッシュコマンド
│
└─ tools/
└─ bin/* # ついでに同期したい個人的スクリプト
そのためには、これらの個人設定ファイルをどこかに集めて GitHub リポジトリで管理し、他のマシンでプルしたとき「リポジトリとローカルの差分を確認する」「リポジトリの内容でローカルを上書きする」ことができるコマンドを実装しておけばよいと思います。
それくらいなら自分で実装してもよいですが、既にそのコマンドを実装済みで、かつ git 操作用便利コマンドも備え、さらに環境ごとの細かい差異や秘密情報を扱う機能も提供する chezmoi 1 というツールがあったのでそれを使ってみます (※ この記事では環境差異や秘密情報の取り扱いまではやりません)。
なお、chezmoi は複数マシン間で個人設定ファイル全般 (従来からの典型例としては ~/.bashrc や ~/.gitconfig など) を同期するのを支援するツールで、2020 年頃には存在していました (私は寡聞にして & 従来設定ファイル程度のボリュームだと同期の動機がなく、知りませんでした)。様々な OS に対応しているので (Install - chezmoi)、私のような Windows ユーザでも安心です。
chezmoi では下図のようにソースディレクトリ ~/.local/share/chezmoi/ に個人設定ファイルを集めて、そこを git 管理下に置く構成をとります。
chezmoi の使い方は公式ドキュメント Install - chezmoi と Quick start - chezmoi がわかりやすいですが、本記事ではそれらを「どこからどこに反映するときどうする」という見出しに整理し、chezmoi を使い始めやすいように記します。
-
初回手順
- 【手順1】 PC1 に chezmoi をインストールする
- 【手順2】 PC1 で対象ファイルをソースディレクトリに登録する
- 【手順3】 PC1 でソースディレクトリをステージング&コミットし、リポジトリにプッシュする
- 【手順4】 PC2 に chezmoi をインストールする
- 【手順5】 PC2 でリポジトリからソースディレクトリをプルする
- 【手順6】 PC2 でソースディレクトリとローカルの差分を確認する
- 【手順7】 PC2 でソースディレクトリをローカルに反映する
-
運用手順
- ア. GitHub リポジトリを直接変更した場合
- イ. ソースディレクトリを変更した場合
- ウ. ローカルを変更した場合
初回手順
【手順1】 PC1 に chezmoi をインストールする
Install - chezmoi にインストール方法があります。
Windows の場合は、パッケージ管理ツール Chocolatey や Scoop による方法も記載されていますが、それらを導入していない場合でも winget install twpayne.chezmoi で ~/AppData/Local/Microsoft/WinGet/Packages/ 以下に chezmoi.exe が取得でき、環境変数にパスが追加されます。
winget install twpayne.chezmoi
コンソールを開き直して、コマンドが通りバージョンが表示されることを確認します。
chezmoi --version
あるいは、Download a pre-built binary から手元の OS に対応する chezmoi.exe をダウンロードし、自分でパスを通しても構いません。
【手順2】 PC1 で対象ファイルをソースディレクトリに登録する
chezmoi を使用するにはまず ソースディレクトリ ~/.local/share/chezmoi に同期したい個人設定ファイルを集めます。どこからでも以下のコマンドでできます。
chezmoi init
# -> ~/.local/share/chezmoi が作成される
chezmoi add ~/.claude/CLAUDE.md # Claude 用の共通システムプロンプトを登録
# -> ~/.local/share/chezmoi/dot_claude/CLAUDE.md にコピーされる
chezmoi add ~/tools/bin/cld-ini.sh # 個人的なシェルスクリプトを登録
# -> ~/.local/share/chezmoi/tools/bin/cld-ini.sh にコピーされる
ちなみに上記の例からわかる通り、個人設定ファイル ~/.xxxxxx はソースディレクトリ下では dot_xxxxxx として管理されます。
【手順3】 PC1 でソースディレクトリをステージング&コミットし、リポジトリにプッシュする
個人設定ファイルをソースディレクトリに集めただけでは他のマシンに同期できないので、GitHub リポジトリにプッシュします。予めリポジトリを新規作成しておきます。 2 その上で、以下を実行します。
chezmoi cd # ソースディレクトリ ~/.local/share/chezmoi でプロセスが立ち上がる
git add . # ステージング
git commit -m "Initial commit" # コミット
git remote add origin git@github.com:CookieBox26/dotfiles.git # リポジトリ URL を設定
git branch -M main
git push -u origin main # プッシュ
exit # プッシュし終わったら抜ける
【手順4】 PC2 に chezmoi をインストールする
いよいよ個人設定を PC2 に同期しますが、こちらにも chezmoi が必要なので、【手順1】同様にインストールします。
【手順5】 PC2 でリポジトリからソースディレクトリをプルする
chezmoi init に【手順3】のリポジトリ URL を指定すれば、PC1 でプッシュした内容が ~/.local/share/chezmoi にプルされてきます。
chezmoi init git@github.com:CookieBox26/dotfiles.git
なお、【手順6】 (差分確認) を踏まずにもうローカルに反映したい場合は以下でできます。
chezmoi init --apply git@github.com:CookieBox26/dotfiles.git
【手順6】 PC2 でソースディレクトリとローカルの差分を確認する
まずはローカルとの差分を確認します。
chezmoi diff # ソースディレクトリとローカルの差分確認
【手順7】 PC2 でソースディレクトリをローカルに反映する
問題がなければローカルに反映します。
chezmoi apply -v # ソースディレクトリからローカルへ反映
初回反映時には発生しないかもしれないですが、ローカルが、chezmoi による最後のローカル反映時から変更されている場合は、確認メッセージが出るようです。
$ chezmoi apply -v
tools/bin/cld-ini.sh has changed since chezmoi last wrote it?
> diff/overwrite/all-overwrite/skip/quit
この場合は、入力ヒントの頭文字を打てばよいようです。
-
dを打つと差分が表示され、再度このメッセージに戻ってきます。 -
oを打つとローカルを上書きします。 -
aを打つとこのファイルも次のファイル以降もローカルを上書きします。 -
sを打つとスキップして次のファイルにいきます。 -
qを打つと中断します。
運用手順
いずれ設定を変更することもあると思います。状況によって、下図の ア. と イ. と ウ のどこの変更を他に反映するかが異なると思います。「どこから先に変更したか」ごとに、手順を整理します。
ア. ローカルの個人設定ファイルから変更した場合
日々の作業の中で必要が生じて手元の個人設定ファイルを変更すると、このケースになると思います。このケースでは、ローカルの変更の「ソースディレクトリへの登録」と「リポジトリへのプッシュ」をすればよいと思います。
# ローカルを変更する
# vi ~/.claude/CLAUDE.md
chezmoi diff ~/.claude/CLAUDE.md # ソースディレクトリとローカルの差分確認
chezmoi add ~/.claude/CLAUDE.md # ローカルからソースディレクトリに登録
chezmoi cd
git status
git add dot_claude/CLAUDE.md # ステージング
git commit -m "Update CLAUDE.md to require showing diffs before changes" # コミット
git push # プッシュ
exit
イ. ソースディレクトリから変更した場合
ア. と ウ. に比べてあまりないケースな気はしますが、ソースディレクトリを真っ先に変更した場合は、ソースディレクトリの変更の「ローカルへの反映」「リポジトリへのプッシュ」をすればよいと思います。
# ソースディレクトリを変更するのは以下のどちらでも可能
# chezmoi edit ~/.claude/CLAUDE.md
# vi ~/.local/share/chezmoi/dot_claude/CLAUDE.md
chezmoi diff ~/.claude/CLAUDE.md # ソースディレクトリとローカルの差分確認
chezmoi apply -v ~/.claude/CLAUDE.md # ソースディレクトリからローカルへ反映
chezmoi cd
git status
git add dot_claude/CLAUDE.md # ステージング
git commit -m "Update CLAUDE.md to require showing diffs before changes" # コミット
git push # プッシュ
exit
ウ. GitHub リポジトリから変更した場合
「PC1 での作業時に設定を変更し、GitHub リポジトリに反映した」というとき、PC2 からみてこの状況になると思います。その場合は単に PC2 に変更をプルすればよいです。
# GitHub リポジトリが先に変更されてる状況
chezmoi git pull # そのマシンのソースディレクトリに変更をプルするコマンド (後述)
chezmoi diff # ソースディレクトリとローカルの差分確認
chezmoi apply -v # ソースディレクトリからローカルへ反映
まとめ
どのコマンドでどこからどこへ内容が反映されるかは Quick start - chezmoi 内に出てくるシーケンス図がわかりやすいですが、まとめると下図になると思います。
- 先の節の ウ. で説明を省きましたが、
chezmoi git ...とすることで、ソースディレクトリ~/.local/share/chezmoi/を作業ディレクトリに git コマンドを実行できます。- なので実は、
chezmoi cdでソースディレクトリに入らずとも変更をステージ&コミット&プッシュできます。が、個人的には素直に入った方がやりやすいと思います。 - 個人的に、「変更をプッシュするときはステージ&コミットのためソースディレクトリにいる」「変更をプルする時はソースディレクトリにいない」と思ったので、あまり使わなさそうな方のコマンドを灰色にしています (使い方には個人差があります)。
- なので実は、
-
フランス語に明るい人は chez moi が「私の家」の意味であることがわかるかもしれません。体を表す名称だと思います。読み方はドキュメントに "With chezmoi, pronounced /ʃeɪ mwa/ (shay-mwa) (listen 1 2 3)," と音声リンクがあるので聞いてください (私には シームワ と聞こえました)。 ↩
-
リポジトリ名は何でもよいですが、
dotfilesにしておくと PC2 でのリポジトリ取得をchezmoi init $GITHUB_USERNAMEに省略できるようです (ソース)。ただ、そう省略するとリポジトリに HTTPS 接続するといった記述にみえるので、SSH 接続したければ結局省略せずchezmoi init git@github.com:CookieBox26/dotfiles.gitとする必要がありそうです。 ↩