.gitignoreをグローバルで設定し、OneDriveやDropboxで共有する方法

git

.gitignore、毎回設定するの面倒ですよね。

globalに設定しようとするとUSERフォルダに入ってくるので、複数台のPCを使って作業している場合にはちょっと不便です。

そんな時に便利なのが、$XDG_CONFIG_HOMEの仕組みを使ってシンボリックリンクや環境変数を設定してしまう方法。WindowsでもMacでも動きます。

さらに、.gitignoreをOneDriveやDropboxなどのクラウドサービスにアップしておけば、設定を書き変える度に複数台のPCで同期して・・・・という部分もクラウドが面倒を見てくれます。

各PC毎に設定を行うという点は免れないものの、最初の一度だけで済みますので圧倒的に楽になります。

スポンサーリンク

よくある.gitignore_globalを作成する方法

グローバルな.gitignoreを設定したい場合にやりがちなのが、以下の設定

[core]
    excludesfile = ~/.gitignore_global

コマンドでいくと以下ですね。

git config --global core.excludesFile ~/.gitignore_global

上記の設定をした上で【.gitignore_global】ファイルを【$XDG_CONFIG_HOME】または【$HOME】に置くと、記載したファイルがgitから追跡されなくなります。

この設定でも問題はないのですが、複数台のPCで作業するにあたっては以下のような問題点もあります。

  • 各PC毎に上記のファイル作成を行いたくない
  • PC毎に設定ファイルに差異が出る可能性がある
  • うっかり作業を忘れたPCがあると無視したいファイルがgitに追跡されてしまう

gitignoreにはデフォルトの置き場がある

gitignoreのマニュアルを読んでみると、【core.excludesfile】にはデフォルトの置き場があります。

Patterns which a user wants Git to ignore in all situations (e.g., backup or temporary files generated by the user’s editor of choice) generally go into a file specified by core.excludesFile in the user’s ~/.gitconfig. Its default value is $XDG_CONFIG_HOME/git/ignore. If $XDG_CONFIG_HOME is either not set or empty, $HOME/.config/git/ignore is used instead.

Git – gitignore Documentation

ごく簡単に訳しますと、【core.excludesfile】のデフォルト値は【$XDG_CONFIG_HOME/git/ignore】もしくは【$HOME/.config/git/ignore】です。$HOMEの方は、$XDG_CONFIG_HOMEが空の時に使われますので、優先順位は以下のようになります。

  1. $XDG_CONFIG_HOME/git/ignore
  2. $HOME/.config/git/ignore

通常であればこの仕組みを使ってグローバルなgitignoreを作成していくのが最も推奨される方法です。

ただし、この【$XDG_CONFIG_HOME】や【$HOME】は大抵の場合ローカルフォルダなので、上記の各PC毎に差異が出かねない、という問題点は解消されません。

$XDG_CONFIG_HOMEという仕組み

ここでまず、【$XDG_CONFIG_HOME】の仕組みについて考えてみましょう。

これは、【XDG Base Directory】という仕様に基づいているディレクトリで、ユーザー固有の設定が書き込まれるディレクトリのことになります。デフォルト値は【$HOME/.config】です。

Windowsの場合はどちらも設定されていないことが多いですが、【%USERPROFILE%】(C:\Users\{ユーザー名})フォルダが該当します。

クラウドと環境変数・シンボリックリンクでignoreファイルを共有

上記を踏まえますと、OneDriveやDropboxなどのクラウドサービスに設定ファイルを置き、環境変数かシンボリックリンクで該当フォルダを指定してやれば、どの環境でも同一のファイルを設定ファイルとして読むことができる、ということになります。

具体的には、各PC毎に【$XDG_CONFIG_HOME】の環境変数を設定してしまう。またはシンボリックリンクを貼ってしまう。などの手段です。

わたしはOneDriveのルートフォルダに.configのフォルダがありますので、【$XDG_CONFIG_HOME】に対応したシステムであれば、gitに限らずファイルの共有ができるようになっております。

環境変数の設定例(Windows&OneDrive)

変数名:XDG_CONFIG_HOME
変数値:C:\Users\{ユーザー名}\OneDrive\.config

XDG_CONFIG_HOMEの環境変数をWindowsに設定した例(OneDriveにて)

そして、この【.config】フォルダ内に【git/ignore】という構成でファイルを作成すれば完成です。注意したいのは、.gitignoreではなく【ignore】ファイルだという点です。ignoreファイルの中身は.gitignoreと同様に書けばOKです。

ちなみに、gitのようなシステムが使用するフォルダを共有するにあたり、GoogleDriveはあまりおススメできません。GoogleDriveが各フォルダに作るdesktop.iniが邪魔でどうしようもない時がありますので。

環境変数を作るにしてもシンボリックリンクを作るにしても、作業環境に合わせて最適な手段を取れると良いかと思います。

コメント

タイトルとURLをコピーしました