一 、assume-unchanged
已经纳入的版本控制的文件添加本地忽略
git update-index --assume-unchanged 文件名
取消本地忽略
git update-index --no-assume-unchanged 文件名
查看所有被忽略的文件
git ls-files -v | grep '^h\ '
提取所有被忽略文件路径,方法如下
git ls-files -v | grep '^h\ ' | awk '{print $2}'
所有被忽略的文件,取消忽略的方法,如下
git ls-files -v | grep '^h' | awk '{print $2}' |xargs git update-index --no-assume-unchanged
注意:
assume-unchanged
的文件,如果出现修改冲突,会以最新提交覆盖本地变更
二 、.gitignore
通过配置.gitignore
文件实现。
gitignore规则只能对Untracked Files生效
对于已经纳入版本控制的文件如果不再需要。可以先把它从版本控制中移除,然后在添加到.gitignore
git rm --cached file
当我们需要删除暂存区或分支上的文件, 但本地又需要使用, 只是不希望这个文件被版本控制, 可以使用 git rm --cached
, git rm --cached
会从index
里面删除该文件,下次commit
的时候会修改git仓库,但是本地的文件还是保留,此时再去修改.gitignore
文件就实现了文件忽略。
三 、exclude
git 还提供了另一种exclude
的方式来做同样的事情,不同的是.gitignore
这个文件本身会提交到版本库中去,而 .git/info/exclude
这里设置的则是本地需要排除的文件,不会影响到其他人,也不会提交到版本库中去。
特别适合于解决本地新增了文件,且本地需要保留新增文件且不想修改.gitignore
也不想提交新增文件的情况,比如spring boot项目本地新增application-local.yml用来覆盖dev配置.
网友评论