コンテンツにスキップ

リポジトリ管理されているファイルをローカルで無視する

最終更新日: 2021-04-01

–skip-worktree の一括解除と一括付与

  • ブランチの切替時に一時的に --skip-worktree にしているものの変更を隠したり、再現したい時に便利
  • .envのような個々人の環境によって異なるものがリポジトリ管理対象になっているときに使える
    • 打つのが割と面倒なので何かしらスクリプト化しておくと楽

–no-skip-worktree -> push stash

ブランチで--skip-worktreeとなっている対象の変更を隠す

1
2
3
4
# --skip-worktreeの一括解除
git ls-files -v | grep ^S | sed -r 's/^S.(.+)$/\1/g' | xargs git update-index --no-skip-worktree
# 出てきた変更を全てスタッシュに入れる
git stash push -q -m stash_skiptree

pop stash -> –skip-worktree

前項で隠した変更を再現して、--skip-worktreeし直す

1
2
3
4
# stashから戻す
git stash pop -q
# この時点での差分に対し--skip-worktree
git diff --name-only HEAD | xargs git update-index --skip-worktree