平时积累了一些git使用方面的资料,文件忽略方面一直没有深入研究,这次花了点时间整理了一下另起一文
方案一: .gitignore
.gitignore会被提交到远程,并对所有用户有效
.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。
//更新 .gitignore
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
更新 .gitignore 可以解决 “文件已经被纳入了版本”的情况
方案二: assume-unchanged
git update-index --assume-unchanged PATH 在PATH处输入要忽略的文件。
git update-index --no-assume-unchanged PATH 解除忽略
此方法对“已经被纳入了版本”的文件同样有效
这种方法只对本地用户有效,即本地修改文件不会被提交 但远程有更新会pull下来
这里的PATH貌似只能是文件不能是目录
当指定PATH为目录时:
如:git update-index --assume-unchanged ./
提示:Ignoring path xxx/xxx/xxx 但没有效果
可以使用通配符(*),但是如果目录中含有子目录则会报错:
Unable to mark file xxx/xxx/xxx
解决办法:
利用 git ls-files 命令 和 管道符 | 忽略当前目录下所有文件:
git ls-files -z | xargs -0 git update-index --assume-unchanged
当然这样也只是将已有的文件纳入忽略,对新文件没有效果(需要再次执行该命令或结合下面的方法)
方案三: .git/info/exclude
同样只对本地当前用户有效,可设置目录,设置方法和 .gitignore 相同
和 .gitignore一样只对未跟踪的文件有效
_____________________________________________________________________
//提交忽略的文件
git add -f <path>