胖蔡
2020年07月30日胖蔡Bugfix.gitignore,Git,过滤文件无效70次阅读

日常操作中,我们往往会出现由于git仓库不断的增加的原因,而需要添加更多的过滤文件的情况。

但这时,我们又发现虽然在**.gitignore**添加过滤条件,却无法生效。一般的这种情况是由于在添加 .gitignore之前对过滤文件已进行过操作,在git记录中已存在了操作记录,导致后续过滤条件不成立。这个问题的解决方式我们可以通过两种方法来解决:

整库更新

删除缓存

由于是之前对过滤文件已经进行过操作,所以在开始过滤前需要对本地和远程分支进行缓存删除操作。需要注意的是在擦欧总之前可以暂时备份一个.gitignore文件。

$git pull origin master $git rm -r --cached .

更新过滤规则

删除git缓存后,我们需要将新的过滤规则进行更新,此时的所有文件都是初始状态,需要重新将文件添加到git库

$git status $git add .

commit并提交记录

之后我们就可以通过commit 来进行常规性操作即可。

F:\github\enjoytodayAdmin>git commit -m "update ignore." [master eb05743] update ignore. 13 files changed, 733 insertions(+), 1571 deletions(-) delete mode 100644 .idea/dataSources.local.xml delete mode 100644 .idea/dataSources.xml delete mode 100644 .idea/deployment.xml delete mode 100644 .idea/enjoytodayAdmin.iml delete mode 100644 .idea/inspectionProfiles/Project_Default.xml delete mode 100644 .idea/misc.xml delete mode 100644 .idea/modules.xml delete mode 100644 .idea/remote-mappings.xml delete mode 100644 .idea/vcs.xml delete mode 100644 .idea/workspace.xml

局部删除更新

如上方法虽可解决,但对仓库整体的更新较大。这时,我们可以通过局部更新的方式来解决这个问题。

同步远程仓库并将我们需要新增的过滤文件移除git

$git pull origin master $git rm .idea/deployment.xml $git rm .idea/enjoytodayAdmin.iml

更新.gitignore文件并commit、提交远程库

$git add .gitignore $git commit -m "update .gitignore" $git push origin master