gitの管理ディレクトリを外出にする方法

2018.12.10

はじめに

gitの管理ディレクトリ(.git)とソースのディレクトリを別々のディレクトリにする方法を紹介します。

管理ディレクトリが同じことの弊害

.gitディレクトリがソースと同じディレクトにあるとgrepやfindを使ってディレクトリ内を検索するとき、除外設定をしなければならなかったりと面倒です。 また、.gitディレクトリを他の人や一部の人に見せたくないシーンもあると思います。

管理ディレクトリを外に出す方法

リポジトリの作成から行う場合は、下記のコマンドを実行すると、--separate-git-dir=に指定したディレクトリに管理ディレクトリを置くことができます。

git init --separate-git-dir=/path/to/repository

ソースコードと同じディレクトリに.gitが作成されますが、これはディレクトリではなくファイルになっています。 ファイルの中身にディレクトリの位置が記載されています。

cat .git
gitdir: /path/to/repository

githubなどからgit cloneしてくるときにも、このオプションを使うことができます。

git clone https://url --separate-git-dir=/path/to/repository

dropboxなどのクラウドストレージを利用するときにも、活用できそうな方法です。