忽略已追蹤的檔案
Posted
有時候我們本地開發的時會需要忽略一些個人使用的檔案,避免 commit 到不需要的檔案,通常會這樣做:
.gitconfig
加入core.excludesfile
- 直接修改
.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
有兩個很相似的參數:
-
assume-unchanged 在使用
git reset --hard
時會改變 index,如果 repository 被忽略的檔案有修改時,git pull
會直接覆蓋被忽略的狀態 -
skip-worktree 則一定要手動下
--no-skip-worktree
才能成功進行git pull
所以為了了解被忽略的檔案在 remote 是否有發生改變,還是推薦使用 --skip-worktree