はじめに
dotfiles を Git 管理しようとすると、
次のような壁に当たることがよくあります。
- 管理したい設定が散らばっている
-
~/.zshrcや~/.vimrc以外に何を含めるべきか分からない - symlink が増えて、構成が分からなくなる
結果として、
- Git 管理を諦める
- とりあえず全部放り込む
- 後から触るのが怖くなる
という状態になりがちです。
この混乱の多くは、
「設定ファイルの置き場所が曖昧なまま Git 管理しようとする」
ことが原因です。
XDG Base Directory Specification を前提にすると、
dotfiles の Git 管理は驚くほど単純になります。
結論から
XDG 前提で dotfiles を Git 管理するとは、
~/.config以下だけを Git 管理する
ということです。
これだけで、
- 管理対象が明確になる
- 余計なファイルを含めずに済む
- マシン移行が楽になる
という効果が得られます。
XDG 前提だと、何を Git 管理するのか
まず整理します。
Git 管理するもの
-
~/.config/**- zsh
- git
- nvim
- tmux
- 各種 CLI ツールの設定
👉 「設定」だけです。
Git 管理しないもの
-
~/.local/share- 履歴ファイル
- 実行結果
- 永続データ
-
~/.cache- キャッシュ類
👉
消しても再生成されるもの、
個人データが混ざるものは含めません。
ディレクトリ構成(最小)
最小構成は次のようになります。
dotfiles/
├── config/
│ ├── zsh/
│ ├── git/
│ ├── nvim/
│ └── tmux/
└── README.md
この config/ が、
そのまま ~/.config に対応します。
実際の Git 管理方法
方法は大きく 2 つありますが、
最初は symlink 方式が無難です。
方法 1. symlink 方式(おすすめ)
git clone https://example.com/dotfiles.git ~/dotfiles
ln -s ~/dotfiles/config ~/.config
または既存の ~/.config がある場合:
mv ~/.config ~/.config.bak
ln -s ~/dotfiles/config ~/.config
👉**「設定はすべて Git 管理下」**になります。
方法 2. 個別に symlink を張る
ln -s ~/dotfiles/config/zsh ~/.config/zsh
ln -s ~/dotfiles/config/git ~/.config/git
👉一部だけ管理したい場合はこちらで
zsh を例にすると
XDG 前提では、zsh の設定は次のようになります。
~/.config/zsh/
├── zshrc
├── zshenv
├── zprofile
└── zlogin
Git 管理対象は:
dotfiles/config/zsh/
履歴は:
~/.local/share/zsh/history
👉設定とデータが完全に分離されます。
まず最初にやる確認(3 分)
以下を実行してみてください。
ls ~/.config
ls ~/.local/share
問いは 1 つだけです。
この中で Git 管理すべきなのはどれか?
答えは:
~/.configだけ
です。
XDG 前提で Git 管理すると何が嬉しいか
1. 管理対象に迷わない
「これは入れる? 入れない?」
という判断が不要になります。
2. マシン移行が一瞬
git clone
ln -s
これだけで設定が復元します。
3. 壊すのが怖くなくなる
- 設定は Git にある
- データは別
- キャッシュは消せる
安心して試行錯誤できます。
よくある注意点
-
.config直下を丸ごと管理する前に、中身を一度確認しましょう - トークンや秘密鍵は除外しましょう
-
README.mdに「前提(XDG)」を書いておきましょう
まとめ
- dotfiles の Git 管理は XDG 前提にすると一気に楽になります
- 管理対象は
~/.configだけ - データとキャッシュは含めない
- symlink 方式がシンプルで安全
XDG は単なる仕様ではなく、
dotfiles 管理を成立させるための前提条件です。
設定が Git 管理されていると、
環境は派手に変わりませんが、
粛々と、確実に整っていきます。