0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【0から学ぶ】シンボリックリンク不要の dotfiles 管理

0
Last updated at Posted at 2026-04-25

教授や先輩から便利、便利と耳にしていた dotfiles について。
何それ美味しいの!? の状態から、bare git repository で dotfiles を管理するってすっげぇ便利じゃん! に至るまでの勉強ログをここに供養します。

この記事では、

  1. dotfilesとは
  2. bare git repositoryとは
  3. bare git repository を用いた dotfiles の管理の仕方

が学べます。

そもそも、dotfilesって?

.zshrc.config/ など、名前が .(ドット)から始まる隠しファイルのこと。
これら dotfiles は主に、各種ツールの 設定 を担っています。

快適な設定ファイルが書けたぞ!

一度これぞ!という設定ファイルが書けたら、手元の PC だけでなく、別の PC や、 v100 等のリモートマシン上でも、同じ設定を使いたいぞ、となります。
しかし、設定ファイルは

  • ~/.zshrc
  • ~/.config/kitty
  • ~/.config/nvim

など、あっちゃこっちゃに散らばっています。

さて、設定ファイルを1つずつコピーするのは面倒です。
git を使って dotfiles をうまく一元管理する方法を考えてみましょう。

dotfiles.png

dotfiles の最適な共有方法を考える

Gitで管理する方法を愚直に考えてみます。

  • 方法1:ホームディレクトリで直接 git init する
    → ホームディレクトリ全体が対象になるため、.gitignore 書くのが面倒...

  • 方法2:dotfiles の実体を別のフォルダ(ex. ~/dotfiles/)に集約し、シンボリックリンクを張る
    → リンクを張るのが面倒...

  • 方法3: git bare repository を活用する!🔥
    → シンボリックリンク不要!

Bareリポジトリとは?

Bare:裸の、むき出しの
Weblio辞書

「Bare」という名前の通り、 Working Tree を持たず、Gitの管理データ.gitのみがむき出しになっている 特殊なリポジトリです。

この方法を使って dotfiles を管理すると、設定ファイルを特定のフォルダに mv したり、リンクを張る手間は一切不要です。
すなわち、 設定ファイルは元の場所に置いたままgit管理 することができます。

bare git repository についての詳細な説明はこちら

はじめかた(git bare repository)

Step1. Bare リポジトリの作成と初期設定

まず、設定ファイルたち(dotfiles)の変更履歴を管理するための Bare リポジトリを作成します。
また、操作を簡単にするため、alias を設定しておくと便利です。

# 1. bare repo 作成
git init --bare $HOME/.dotfiles

# 2. オプションが長いので、alias を作成(config の c)
alias c='command git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'

# 3. 未管理ファイルを非表示にする設定(普段の git には影響しない)
c config --local status.showUntrackedFiles no
💡補足:設定したalias の意味
  • command git: command は内部コマンドで、「他の alias や関数を無視して、システム本来の git プログラムを直接実行する」という意味

  • --git-dir=$HOME/.dotfiles/: Gitの履歴や設定を保存する「管理データ(通常は .git フォルダ)」の場所を、明示的に ~/.dotfiles/ (Bareリポジトリ)に指定

  • --work-tree=$HOME: 実際にファイルが置かれている「作業場(Working tree)」をホームディレクトリ(~/)に指定

これにより、他のGitプロジェクトには一切影響を与えず、ホームディレクトリ以下の dotfiles を c add .zshrcc commit といった短いコマンドで安全に管理できる。

Step2. 設定ファイルの追加とPush

準備ができたので、実際に設定ファイルをバンバン追加して、GitHub や GitLab に保存します。
手始めに、.zshrc.config/nvim をgit管理してみます。

いつもの git コマンドの代わりに、先ほど作った alias c を使うことだけ注意!

# add して commit
cd ~
c add .zshrc 
c add .cnofig/nvim
c commit -m "Initial commit"

# Web UI等でリモートリポジトリを作成後、origin を設定した Push
c remote set-url origin git@github.com:自分のユーザ名/dotfiles.git
c push origin master

# 追跡している設定ファイルを確認したい場合
c ls-files

他にも管理したいファイルがあれば、

  1. c add ファイル名
  2. c commit -m "hogehoge"
  3. c push origin master

していくだけでOKです。

Step3. エイリアスを永続化しておく

alias を .zshrc に書き込んでおきましょう。

# ~/.zshrc をエディタで開き、以下の1行を追加する
alias c='command git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
# 上記の変更自体も、早速 git で保存しておく
c add ~/.zshrc
c commit -m 'Add alias c'
c push origin master

Step4. 別のマシンに環境を複製する

別の環境(ex. Linuxマシン)で同じ設定を再現したいときは、別の環境上で以下のコマンドを実行しましょう。
ユーザ名の部分を変更することで、世の中に公開されている dotfiles repository を自分の環境に丸ごとコピーすることもできます。

事前に、自分の環境のバックアップを取っておくことに注意

git clone --bare git@github.com:ユーザ名/dotfiles.git $HOME/.dotfiles

alias c='command git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'

# checkout すれば .zshrc 等の実体が ホームディレクトリ以下に展開される。同名のファイルが既に存在していると失敗するので、事前に退避すること
c checkout

# 未管理ファイルを非表示にする設定も追加しておく
c config status.showUntrackedFiles no

これにて、晴れて楽に dotfiles を管理できるようになりました!
皆さんの dotfiles を覗き見しながら、これからも自分の dotfiles を育てていきます!!🌻

ここまで読んでくださってありがとうございました!

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?