隠しファイル/隠しディレクトリをgitignoreする2つの方法

👻 気づくとそこにいる隠しファイル

GitHubを使って複数人で開発作業をしていると、たまに「おみゃーさん、いつどこで入ってきたんだがね?(愛知弁)」というファイルがコミットに紛れ込んでくることがあります。

代表的なものは.DS_Storeなどです。

.DS_StoreMac固有の隠しファイルで、いろんなフォルダに実は潜んでいます🥷
個人的には、デザイン業務とかで写真のやり取りをするときにzip圧縮したり他の人にファイルを送ったりするといつの間にか可視化されているという経験は幾度となくありました。

他にはWindows固有のファイルであるThumbs.dbや(これは「隠し」ファイルではないか?)、あとは.vscodeのようなエディタ固有の隠しディレクトリもあります。

👋 隠しファイルはGit管理対象外へ

こういった隠しファイル系はリポジトリ内には不要なものなので、Gitの管理対象外にしてしまうのが手っ取り早いです。

Git管理対象外にするといえばgitignore。方針としては大きく2つあるようです。

  1. リポジトリ内の.gitignoreファイルに追記する(.gitignoreがなければ新規作成する)
  2. 自身のMacでグローバルなgitignore設定をする
    • マシン固有の隠しファイルは、リポジトリ側でなく自身のMacで設定するほうが良さそう

今回は自身のMacの方の設定の話です。

自分はどうだっけと思って調べたら、ユーザーディレクトリ直下(/Users/myname/)に.gitignore_globalというグローバル設定用のファイルがあり、その中にすでに.DS_Storeの記述がありました。自分で入れたんだっけ、何も覚えていない…😇

📁 gitignoreのスタンダードな置き場所

少し調べてみたところ、gitignoreを設定する場所としてデフォルトは別にあるようです。

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

上記によると、~/.config/git/ignore内がデフォルト値とのことです。

一方、日本語訳もある8.1 Git のカスタマイズ - Git の設定 の方でガッツリ~/.gitignore_globalというのが出てきます。

このような設定を行うには、グローバルな .gitignore のようなファイルが必要です。 ~/.gitignore_global ファイルへ次の内容を書き込んで、(以下略)

Git - Git の設定

昔の僕が、これを参照して設定をしたのかもしれません。(繰り返しますが、何も覚えていない😇)

🚚 gitignore置き場のお引越し

上の記事内で書かれているように、今の~/.config/git/ignoreのままでも問題はないようなのですが、せっかく今回デフォルト値を知ったので場所を移すことにしました。

# 必要なディレクトリを作成(-pオプションで、すでにディレクトリがあってもエラーにならないようにしている)
mkdir -p ~/.config/git

# 元々あった.gitignore_globalをリネームしてさらに移動
mv ~/.gitignore_global ~/.config/git/ignore

# 新しく設置した方のファイルをグローバルなgitignoreとして使うように変更するコマンド
git config --global core.excludesFile ~/.config/git/ignore

これによりユーザーディレクトリ直下にあった.gitignore_globalファイルは無くなりました。
ユーザーディレクトリ直下は煩雑になりがち(というかなっている)なので、ファイルが1つ減ったのも何気に嬉しいポイントでした✨

🔬 参考記事

この記事を書くにあたって、以下の記事を参考にさせていただきました🙏

zenn.dev

zenn.dev

おまけ

この話は続きがあるかもしれず、続きができたらまた別の記事で書きます🚀