我们知道,对于没有纳入版本控制的文件,我们可以使用.gitignore
文件来忽略它们。
但是,对于已经纳入版本控制的文件,我们要怎样忽略对它们的修改呢?
前言
有两种方式,都是依赖于命令git update-index
。详见:
https://git-scm.com/docs/git-update-index#_skip_worktree_bit
assume-unchanged
强制忽略已经纳入了版本控制的文件。 仅仅是忽视对文件的修改,但是相关git操作(比如switch, pull, merge, reset)仍然对文件生效
## 强制忽略 .gitignore README.md src/index.md
git update-index --assume-unchanged .gitignore
git update-index --assume-unchanged README.md
git update-index --assume-unchanged src/index.md
## 查询被忽略的文件
## git ls-files -v 会列出所有纳入了版本控制的文件。
## H 开头表示正常,h 开头表示强制忽略
#for Windows
git ls-files -v|findstr "^h"
#for Linux
git ls-files -v|grep "^h"
# 取消强制忽略 .gitignore
git update-index --no-assume-unchanged .gitignore
skip-worktree
强制忽略已经纳入了版本控制的文件。 git操作会忽略这些文件。
## 强制忽略 .gitignore README.md src/index.md
git update-index --skip-worktree .gitignore
git update-index --skip-worktree README.md
git update-index --skip-worktree src/index.md
## 查询被忽略的文件
git ls-files S
# 取消强制忽略 .gitignore
git update-index --no-skip-worktree .gitignore