ファイルの一部分をgit ignoreする
Table of Contents
ファイルの一部分だけをgitの追跡対象外にする方法
経緯
intelephenseというPHPの言語サーバのライセンスキーをcoc-settings.jsonに記述する必要があるが、coc-settings.json自体は.dotfiles上で公開したい。
当然ライセンスキーをGitHub上に公開するわけにはいかないので、該当部分だけ追跡しないようにしたい。
やりたいこと
つまり
ひみつ // gitignoreや
// gitignore_start
ひみつ
ひみつ
ひみつ
// gitignore_endと書くことで、git addしても秘密情報だけステージングされないようにしたい。
方法
.gitconfigに以下のように書く
.gitconfig
[filter "gitignore"]
smudge = cat
clean = "sed -e '/gitignore$/'d -e '/gitignore_start/,/gitignore_end/'d"
cleanフィルタの内容がミソ。ここで記述した内容がgitでステージングを行ったときに行われるので、
gitで追跡したくない箇所の前後にコメントとしてgitignore_start,gitignore_endを記述しておけば、
そこだけgit ignoreしているような挙動になる。
coc-settings.json
...
// gitignore_start
"intelephense.licenceKey": "~~~~~",
// gitignore_end
...
めでたしめでたし
上記ファイルは、実際にはjsoncというコメント可能なフォーマットで、コメントが書けない普通のjson等、ファイルの種類によってはこの方法では対処しきれないことに注意が必要。
参考文献
Read other posts