ホームディレクトリでgit repoを初期化したくないので、存在する他のすべてのファイルを無視する必要があります。
何故なの?ホームディレクトリ内のファイルを追跡するため、ホームディレクトリもバージョン管理下にある必要があります。
これは、ホームディレクトリがgitリポジトリである必要があるという意味ではありません。説明させてください:
gitリポジトリは2つの部分で構成されています:作業ツリー(もちろん、それがベアリポジトリでない場合)と.git
「データベース」ディレクトリです。通常、後者は前者の(非表示の)サブディレクトリにすぎませんが、厳密には必要ありません。gitは、分離された作業ツリーの使用をサポートしています。したがって、ホームディレクトリをバージョン管理下に保つことができますが、.git
ツール(vim、emacsなど)やgit自体を混乱させる可能性のあるディレクトリをホームディレクトリに含める必要はありません。
セットアップ:
cd ~
mkdir .dotfiles
cd .dotfiles
git init .
これで~/.dotfiles/.git
ディレクトリができました。これを使用しますが、ホームディレクトリを作業ツリーとして指定します。これにはかなり長いコマンドラインが必要なので、エイリアスは良い考えです:
alias dotfiles='git --git-dir ~/.dotfiles/.git --work-tree=$HOME'
これを使用するにはgit
、たとえばの代わりに上記のエイリアスを使用しdotfiles status
ます。
利点:
- 他のツールは必要ありません。gitのみです
- シンボリックリンク地獄/非同期状態の可能性なし
- ホームの下のサブディレクトリにあるgitリポジトリは影響を受けません
私はこれをこのブログの投稿(いくつかの追加情報があります)から取得し、問題なく使用しています。私はしませんが、単純な行*
を.gitignore
追加するだけで、追跡されていない可能性のある大量のファイルを取り除くことができ、追加するつもりのないファイルをリポジトリに追加しないように少し保護することができます。