こんにちは。Supership株式会社の @bizyutyu です。普段はSupership Touch Giftの開発に関わっています。
本記事では、社用PCと個人PC間でAIコーディングアシスタントの設定を同期する際に、Gitのbareリポジトリを使った方法がシンプルで良かったので紹介します。
この記事は Supershipグループ Advent Calendar 2025 の 4日目の記事です。
TL;DR
- 社用PCと個人用PCでAIコーディングアシスタントの設定を同期したい場合、Gitのbareリポジトリがシンプルな解決策
- シンボリックリンクや専用ツールは不要、Gitさえあれば導入可能
- エイリアスを設定することで、通常の
gitコマンドと同じ感覚で操作できる
はじめに
この記事でわかること
- 複数PC間でAIコーディングアシスタントの設定ファイル(dotfiles)を同期する方法
- Gitのbareリポジトリを使ったdotfiles管理の仕組みと導入手順
対象読者
- 開発環境を複数持っている人(社用PC、個人PCなど)
- Cursor、Claude Code、GitHub Copilotなど複数のAIアシスタントを使い分けている人
- dotfiles管理に興味があるが、まだ実践していない人
背景:なぜdotfiles管理が必要になったか
社会人になって社用PCと個人用PCを使い分けるようになりました。両方で複数のAIコーディングアシスタントを使っていると、それらの個人用設定ファイルの同期が地味に面倒なことに気づきます。
例えば、こんな設定ファイルやディレクトリです:
~/.claude/ # Claude Code設定
~/.cursor/ # Cursor設定
~/.copilot/copilot-instructions.md # GitHub Copilot設定
会社ではチーム開発の影響でレビューやコード分析に使用する設定が育ちやすく、個人開発では自分の好みに合わせた設定を試行錯誤しがちです。
これらの知見を環境依存ではなく「個人依存」として一元管理したい ── それが今回の動機です。
dotfiles管理の選択肢
dotfilesを管理する方法はいくつかあります。
1. 専用ツールを使う方法
dotfiles管理ツールは多数存在しますが、ここでは代表的なものを挙げます。
| ツール | 特徴 |
|---|---|
| chezmoi | Go製。テンプレート機能、シークレット管理、マルチOS対応が簡単。機能が豊富。 |
| yadm | Gitのラッパー。テンプレート機能、シークレット管理あり。学習コストが低い。 |
| GNU Stow | シンボリックリンクファームマネージャー。シンプルだがリンク管理が必要。 |
これらは高機能ですが、新たなツールの学習コストや追加の依存関係が発生します。
2. シンボリックリンク + 通常のGitリポジトリ
# dotfilesディレクトリに設定ファイルを集約し、Gitで管理
~/dotfiles/
├── .zshrc
├── .vimrc
└── ...
# 各ファイルへシンボリックリンクを張る
ln -s ~/dotfiles/.zshrc ~/.zshrc
シンプルですが、リンクの管理が煩雑になりそうです。
3. bareリポジトリを使う方法(今回採用)
追加ツール不要、シンボリックリンク不要、Gitだけで完結する方法です。
設定ファイルを元の場所に置いたまま、バージョン管理だけを別ディレクトリで行います。
そもそもbareリポジトリとは
通常のGitリポジトリは、作業ディレクトリ(ワークツリー)と .git ディレクトリがセットになっています。
my-project/
├── .git/ # Gitのメタデータ
└── src/ # ワークツリー(実際のファイル)
一方、bareリポジトリはワークツリーを持たず、.git ディレクトリの中身だけを持つリポジトリです。
# 通常のリポジトリ初期化
git init
# bareリポジトリ初期化
git init --bare
bareリポジトリは単体ではワークツリーを持ちませんが、コマンド実行時に任意のディレクトリをワークツリーとして指定できます。 この特性を活かして、ホームディレクトリをワークツリーとして扱うことができます。
これにより以下の3点を実現できます:
-
$HOMEを直接Gitリポジトリにしなくて済む(他のリポジトリとの干渉を避けられる) - 設定ファイルを元の場所に置いたまま管理できる
- シンボリックリンクが不要
なぜbareリポジトリを選んだか
1. 始めやすい(学習コストがほぼゼロ)
普段使っているGitコマンドがほぼそのまま使えます。エイリアスを設定するので git をそのまま使うわけではないですが、操作感は同じです。
dotgit add ~/.zshrc
dotgit commit -m "Update zshrc"
dotgit push
新しいDSLやコマンド体系を覚える必要がありません。
2. 設定ファイルとシンボリックリンクの管理が混ざらない
シンボリックリンク方式やGNU Stowを使う場合、「設定ファイルそのもの」と「リンクの作成・維持」という2つの関心事が混在します。
bareリポジトリでは:
- 設定ファイルはホームディレクトリの本来の場所にそのまま存在
-
バージョン管理だけが
.dotfiles/ディレクトリで行われる
「.zshrc はどこにある?」→「~/.zshrc にある」。シンプルです。
3. 後から専用ツールへ移行しやすい
bareリポジトリは「最小構成」なので、後々必要になったとき専用ツールへ移行する選択肢を残せます。特にyadmは内部的にbareリポジトリを使っているため、移行が容易です。
4. 今回のユースケースに十分
- 社用PCと個人PCの同期(2台のみで、両方macOS)
- OSが統一されているため、テンプレート機能(OS別に異なる設定を設定する機能)は不要
- AIアシスタントの設定ファイルには機密情報を含まない方針のため、シークレット管理機能(APIキー等を暗号化して管理する機能)は不要
専用ツールは高機能ですが、使わない機能のために複雑さを持ち込む必要はないと判断しました。
導入方法
Step 1: bareリポジトリの作成
まず、ホームディレクトリにbareリポジトリを作成します。
git init --bare $HOME/.dotfiles
Step 2: エイリアスの設定
bareリポジトリを操作するためのエイリアスを作成します。これにより、毎回 --git-dir と --work-tree を指定する必要がなくなります。
まず、gitコマンドのパスを確認します。
which git
# 出力例: /usr/bin/git
確認したパスを使ってエイリアスを設定します。
# .zshrcに追記(bashの場合は.bashrcに追記)
echo "alias dotgit='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'" >> $HOME/.zshrc
# 設定を反映
source ~/.zshrc
ポイント : エイリアス名は
dotfiles、config、dotなど好きな名前でOKです。今回の例ではdotgitとしています。
Step 3: 未追跡ファイルを非表示にする
ホームディレクトリには大量のファイルがあります。この設定によって dotgit status を実行したときに、管理対象外のファイルが大量に「Untracked files」として表示されるのを防ぎます。
dotgit config --local status.showUntrackedFiles no
注意 : この設定は表示を見やすくするためのものです。今回の運用では
dotgit add .のような一括追加は避け、明示的にファイルを指定することをおすすめします。
Step 4: リモートリポジトリの設定
GitHubなどに新規リモートリポジトリを作成し、紐付けます。
# GitHubで空のリポジトリを作成後
dotgit remote add origin git@github.com:YOUR_USERNAME/dotfiles.git
Step 5: 設定ファイルを追加・コミット
管理したい設定ファイルを追加していきます。
# AIアシスタント関連の設定ファイルを追加
dotgit add ~/.claude/commands/review.md
dotgit add ~/.copilot/copilot-instructions.md
# コミット&プッシュ
dotgit commit -m "Add initial dotfiles"
dotgit push -u origin main
Step 6: 別のPCでの導入(クローン)
別のPCでは、以下の手順で設定を反映します。
# 1. gitコマンドのパスを確認
which git
# 出力例: /usr/bin/git
# 2. エイリアスを先に定義(確認したパスを使用)
alias dotgit='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
# 3. bareリポジトリとしてクローン
git clone --bare git@github.com:YOUR_USERNAME/dotfiles.git $HOME/.dotfiles
# 4. ファイルをチェックアウト
dotgit checkout
注意 : 既存ファイルとのコンフリクトが発生する場合は、競合ファイルをバックアップしてから再度チェックアウトしてください。
最後に設定を完了します。
# 5. 未追跡ファイルを非表示に
dotgit config --local status.showUntrackedFiles no
# 6. エイリアスを.zshrcに追記(bashの場合は.bashrcに追記)
echo "alias dotgit='$(which git) --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'" >> $HOME/.zshrc
source ~/.zshrc
日常的な使い方
導入後は、通常のGitと同じ感覚で操作できます。
# 変更状況の確認
dotgit status
# 新しい設定ファイルを追加
dotgit add ~/.new-tool/config.yaml
dotgit commit -m "Add new-tool config"
dotgit push
# 別PCで変更を取得
dotgit pull
まとめ
- bareリポジトリを使えば、追加ツールやシンボリックリンクなしでdotfilesを管理できる
- エイリアスを設定することで、通常の
gitコマンドと同じ感覚で操作可能 - 社用PC・個人PCで同じAIコーディングアシスタントの設定を共有でき、知見が 「個人依存」で蓄積されていく
今回は最小構成で始めましたが、OS間の差異やシークレット管理が必要になったら、専用ツールへの移行も検討してみようと思います。AIアシスタントの設定だけでなく、シェルの設定やエディタの設定なども一緒に管理すると、さらに便利になるかもしれません。まずはシンプルに始めて、必要に応じて新しいものを導入する ── 今回は、そんなアプローチを紹介しました。
最後に宣伝です。
Supershipではプロダクト開発やサービス開発に関わる人を絶賛募集しております。
ご興味がある方は以下リンクよりご確認ください。
👉 Supership 採用サイト
ぜひともよろしくお願いします。