我们在使用git中,经常会遇到这样的情况:
git仓库中有某个必要的配置文件,这个文件应该存在,但是在每个开发人员的本地都要对他进行修改。这就导致这个文件要被反复修改,容易冲突。要想不冲突,就要每个人提交前,都刻意不提交该文件,很是麻烦。(比如TinkPHP下的app.php的debug模式,开发中要使用true,但是生产环境要使用false)
一般我们这时候就会想到,用.gitignore来忽略这个文件,但是该文件是已经提交过的,并且对于工程是必要的,应该保存在git中的。.gitignore对于这种已提交过的文件是无能为力的。
这时候,就需要使用git update-index --skip-worktree
命令了。
该命令的作用是,让git在搜索文件列表时,忽略某个文件,这样该文件即使有修改,git也不会关心。
#例子: git update-index --skip-worktree config/app.php 复制代码
使用这个命令,时间久了,可能会忘记自己忽略过哪些文件,这时候可以使用git ls-files -v . | grep "^S"
命令找出来忽略过的文件
#例子: git ls-files -v . | grep "^S" #输出:S config/app.php 复制代码
不想继续忽略该文件时,使用git update-index --no-skip-worktree
命令,来让git不再忽略该文件。
#例子: git update-index --no-skip-worktree config/app.php