NiceLeeのBlog 用爱发电 bilibili~

备忘录 Git 忽略对Versioned文件的修改

2023-03-22
nIceLee

阅读:


我们知道,对于没有纳入版本控制的文件,我们可以使用.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

内容
隐藏