git ローカルリポジトリ内のファイルの無視(プッシュしない・反映させない)設定(.git\info\exclude)

自分のローカルリポジトリにだけあるファイルを他の人たちに反映させたくない

作成日:2019-09-11, 更新日:2019-09-11

基本

・「.gitignore」ではなく「.git\info\exclude」をいじる

「.gitignore」と「.git\info\exclude」

「.gitignore」と「.git\info\exclude」は同じ修正内容を無視するための設定。
・「.gitignore」は、チーム内全員で無視させる設定。
・「.git\info\exclude」は、自分だけ無視させる設定。

例えば・・・

ローカル環境のDBの接続設定を記載したファイル(例:db.txt)

.gitignore

1.リモートリポジトリに「/db.txt.sample」を用意
2.リモートリポジトリの「.gitignore」に「/db.txt」を記載
3.各ローカルリポジトリで「/db.txt.sample」を「/db.txt」にリネームして、使う。

.git\info\exclude

1.リモートリポジトリに「/db.txt.sample」を用意
2.各ローカルリポジトリで「/db.txt.sample」を「/db.txt」にリネームして、使う。
3.各ローカルリポジトリで「.git\info\exclude」に「/db.txt」を記載

無視する設定と対象ファイル

「.gitignore」も「.git\info\exclude」も同じだが・・・
A.「対象ファイルを作る→無視する設定を作る」だとリモートリポジトリに対象ファイルがプッシュされる
B.「無視する設定を作る→対象ファイルを作る」だとリモートリポジトリに対象ファイルがプッシュされない

▼「A」の場合だとコマンドをちょこっと入力する必要あり
A2.「対象ファイルを作る→無視する設定を作る→インデックスから対象ファイルを削除」だとリモートリポジトリに対象ファイルがプッシュされない
※インデックスからのみ削除するので、実ファイルは削除されない。

めも:インデックスから対象ファイルを削除

▼すでに存在するファイルの場合は、下記のどちらかを実行する必要があるっぽい(未調査)
・「git update-index --assume-unchanged ファイルPATH」
・「git update-index --skip-worktree ファイルPATH」