最近、.git/info/excludeを使う方法を紹介している記事を読みました。 実際、.ideaや自分だけの設定ファイルなどは、うっかりコミットしそうになりますよね。 とはいえ、リポジトリの.gitignoreを触るとチームメンバーに影響が出るため、触りたくないことも多いでしょう。
同じような動機ですが、私が普段使っている他の方法も紹介します。
はじめに
gitは無視したいファイルを.gitignoreに書くことで、Gitの管理対象から外せます。
しかし、.gitignoreはリポジトリごとに存在し、チームメンバー全員に影響を与えます。自分だけの無視設定を書きたい場合、リポジトリの.gitignoreを変更するのは避けたくなります。
今回は、リポジトリの.gitignoreを触らずに自分だけの無視設定を書く方法を4つ紹介します。
- そのリポジトリだけでファイルを無視する
- リポジトリに無視ファイル設定を置く
- リポジトリの.gitignoreに無視するファイルを書く
- グローバルの.gitignoreに、リポジトリごとの無視ファイルを書く <- おすすめ!
- グローバルの.gitignoreに直接無視設定を書く
方法1. そのリポジトリだけでファイルを無視する
そのリポジトリでだけファイルを無視するなら、.git/info/excludeを使えば自分だけの無視設定ができます。
$ echo ".idea/" >> .git/info/exclude
.git/info/excludeはリポジトリごとに存在するため、他のリポジトリには影響しません。
また、.gitignoreと同じ書式で無視設定ができて使い勝手が良いです。
一方で、.git/info/excludeはリポジトリごとに存在するため、複数のリポジトリで同じ設定をしたい場合は、各リポジトリで設定することになります。
また、リポジトリをクローンしなおしたときに設定が消えてしまう1ため、その点は注意が必要です。
これらが嫌で私は余り使わないようにしています。
方法2. リポジトリに無視ファイル設定を置く
リポジトリに.gitignore.local(ファイル名は何でもいい)を置き、そこに自分だけの無視設定を書く方法もあります。
これは2つの方法があります。
2-1. リポジトリの.gitignoreに無視するファイルを書く
リポジトリの.gitignoreに、.gitignore.localを一度だけ書いてしまうのもいいでしょう。
チーム全員が「リポジトリで自分だけの無視ファイル設定は.gitignore.localに書く」というルールを敷くスタイルです。
初回だけリポジトリの.gitignoreを触る必要がありますが、その後は各自が.gitignore.localに自分だけの無視設定を書けます。
$ echo ".gitignore.local" >> .gitignore
こうすることで、チームメンバー全員が、各自.gitignore.localに自分だけの無視設定を書けます。
$ echo ".idea/" >> .gitignore.local
無視されているか確認します。
$ git check-ignore -v -- .gitignore.local .gitignore:139:.gitignore.local .gitignore.local
いい感じですね。
2-2. グローバルの.gitignoreに、リポジトリごとの無視ファイルを書く
リポジトリの.gitignoreを触りたくない場合、グローバルgitignoreに.gitignore.localを指定しておく方法もあります。
これなら、リポジトリの.gitignoreを一切触らずに自分だけの無視設定ができます。私はこれが好きです。
グローバルgitignoreの設定は、XDG_CONFIG_HOMEを使っているなら$XDG_CONFIG_HOME/git/ignoreがgit config --global core.excludesFileのデフォルト設定です。
このパスにファイルを置けばexcludesFileにパスを設定しなくても有効になります。
XDG_CONFIG_HOMEは、Linux/macOS/Windows共通で設定ファイルを配置する場所を示す環境変数です。通常は$HOME/.configに設定されています。
例えば、XDG_CONFIG_HOMEが$HOME/.configなら、$HOME/.config/git/ignoreになります。
$ env | grep XDG_CONFIG_HOME XDG_CONFIG_HOME=/home/foobar/.config $ echo ".gitignore.local" >> "$XDG_CONFIG_HOME/git/ignore"
これで、リポジトリに.gitignore.localを置けば自分だけの無視設定を書けます。
$ echo .idea/ >> .gitignore.local
無視されているか確認します。
$ git check-ignore -v -- .gitignore.local /home/foobar/.config/git/ignore:2:.gitignore.local .gitignore.local
いい感じですね。
方法3. グローバルgitignoreを使う方法
リポジトリごとに無視設定を書くのが面倒な場合、グローバルgitignoreに直接無視したいファイルを書いておく方法もあります。
このやり方は特定のリポジトリだけ例外にできないので、あまり好きではありませんが、OS固有のファイルなどを無視するのに便利です。 グローバルにignoreする内容はgithub/gitignoreにあるテンプレートを参考にすると良いです。便利。
以下は、私が使っているグローバルgitignoreの例です。
$ cat "$XDG_CONFIG_HOME/git/ignore" # --- git --- .gitignore.local # Gibo .gitignore-boilerplates .gitconfig.local # --- macOS --- # General .DS_Store __MACOSX/ .AppleDouble .LSOverride Icon[] # Thumbnails ._* # Files that might appear in the root of a volume .DocumentRevisions-V100 .fseventsd .Spotlight-V100 .TemporaryItems .Trashes .VolumeIcon.icns .com.apple.timemachine.donotpresent # Directories potentially created on remote AFP share .AppleDB .AppleDesktop Network Trash Folder Temporary Items .apdisk # --- Windows --- # Windows thumbnail cache files Thumbs.db Thumbs.db:encryptable ehthumbs.db ehthumbs_vista.db # Dump file *.stackdump # Folder config file [Dd]esktop.ini # Recycle Bin used on file shares $RECYCLE.BIN/ # Windows Installer files *.cab *.msi *.msix *.msm *.msp # Windows shortcuts *.lnk
まとめ
リポジトリの.gitignoreを触らずに自分だけの無視設定を書く方法を4つ紹介しました。
| 方法 | メリット | デメリット |
|---|---|---|
.git/info/exclude |
設定が簡単 | クローンしなおすと消える |
.gitignore.local(リポジトリ) |
チーム全体で統一できる | 一度だけ.gitignoreを触る必要がある |
.gitignore.local(グローバル) |
リポジトリを一切触らない | グローバル設定が必要 |
| グローバルgitignore直接 | OS固有ファイルに便利 | 例外設定ができない |
リポジトリの.gitignoreは極力触りたくない場合、グローバルgitignoreにリポジトリごとの無視ファイルを指定する方法がおすすめです。
参考
- [Git].gitignoreを書かずにファイルを無視したい | Zenn
- Git - gitignore Documentation
- gitignore/Global - github/gitignore | GitHub
- Unityプロジェクトだと、時々クローンしなおしたくなるのでありがちなんですよね↩