git忽略指定文件或目录

现在有两种方式, .gitignore或者.git/info/exclude,这两种方式都表示指定的文件不不会被git进行管理.

但现在有一个需求, 我想忽略某些已经被git管理的文件, 例如, 我有一些配置文件, 我需要git帮我管理着他们, 但是这些配置文件每个开发人员需要配置的项目不一样, 这时我想修改这个文件,但是又不想让git提醒我提交它.

skip-worktree

git update-index --skip-worktree path/to/file

skip-worktree的作用时, 指定的文件一定会被修改, 但是git要认为它没有改变.这样我们就可以在本地修改被指定的文件, 而不同担心git add .会将修改的文件添加到版本控制中.

检查文件是否被忽略:

1
git ls-files -v | grep ^s
  • git ls-files显示所有被git管理的文件
  • -v选择被忽略的文件
  • s--skip-worktree的缩写

将忽略的文件重新添加到版本控制需要使用如下命令:

1
git update-index --no-skip-worktree path/to/file

assume-unchanged

1
git update-index --assume-unchanged path/to/file

assume-unchanged的作用是, 指定的文件在本地肯定不会被修改, git可以忽略对指定文件的检测.

当我们认为某些文件我们一定不会尽心修改, 又想加快git的运行速度时,可以使用该命令.

检查文件是否被忽略:

1
git ls-files -v | grep ^h
  • hassume-unchanged的缩写

恢复使用如下命令:

1
git update-index --no-assume-unchanged path/to/file