忽略已追蹤的檔案

有時候我們本地開發的時會需要忽略一些個人使用的檔案,避免 commit 到不需要的檔案,通常會這樣做:

  1. .gitconfig 加入 core.excludesfile
  2. 直接修改 .git/info/exclude

但是某些情況要忽略已追蹤的檔案,這些方法行不通,該怎麼處理?

1. 忽略已追蹤

git update-index --skip-worktree [<file>...]

2. 解除忽略

git update-index --no-skip-worktree [<file>...]

3. 顯示忽略

git ls-files -v | grep ^S

Aliases

可以加入 alias 方便操作

ignore = update-index --skip-worktree
unignore = update-index --no-skip-worktree
ignored = !git ls-files -v | grep ^S

assume-unchanged vs skip-worktree

update-index 有兩個很相似的參數:

所以為了了解被忽略的檔案在 remote 是否有發生改變,還是推薦使用 --skip-worktree

References