删除Git服务器文件但是保留本地文件

参考:

https://blog.csdn.net/u012804886/article/details/83059315

https://www.cnblogs.com/wfsovereign/p/4186910.html

 

需求分析
假设小明有一天不小心把本地仓库的一个文件夹A推送到了远程GIT服务器(例如:github,gitlab,gitee)上,此时想删除远程仓库的文件夹A,但是本地又不想删除。小明于是去问小红,怎么办?小红不假思索的说,github,gitlab 不是可以删除吗?你直接在远程服务器上操作呀。小明告诉小红,你有所不知,远程操作只能操作单个文件,无法删除文件夹,你可不会傻到一个一个文件去删除。小红说,那怎么办呢?

解决办法
方法一

这里以删除 .setting 文件夹为案例

git rm -r --cached  .setting #--cached不会把本地的.setting删除
git commit -m 'delete .setting dir'
git push -u origin master


方法二
如果误提交的文件夹比较多,方法一也较繁琐

直接修改.gitignore文件,将不需要的文件过滤掉,然后执行命令

git rm -r --cached .
git add .
git commit
git push  -u origin master

下面是我的操作:

我的情况是:git已经提交了许多我不想提交的文件和文件夹,如:venv,1.py,demo开头的文件(之前不知道有gitignore这个功能)

所以现在需要做的是

当前我上传到github的项目目录结构如下,圈出的文件是我希望在本地保留,但git add .时不要上传到github的:

 

1.删除github上多余的文件

#删除单个文件夹
git rm -r --cached  venv
git commit -m 'delete venv dir'
git push -u origin master


 

刷新github可以看到venv,1.py,demoTest文件已经被删除了

 

2.在项目 根目录 下创建.gitignore文件,创建ignore规则(希望哪些文件不交给git管理呢?)

gedit .gitignore

 .gitignore的内容这样写

venv
1.py
demo*

 linux环境下 文件前带.表示该文件是隐藏文件

使用ls -al命令查看该文件已被成功创建

 

具体gitignore的配置规则参照:

https://www.cnblogs.com/kevingrace/p/5690241.html

3.测试ignore规则是否生效

git check-ignore -v venv
git check-ignore -v 1.py
git check-ignore -v demoTest.py

如下图所示,这样就表示ignore文件配置可以匹配到我们不希望交给git进行版本控制的文件或文件夹了

 

4.测试ignore配置生效后,push代码到github

可以看到本地项目文件内容如下:

 

但这次git add . 只将.gitignore文件提交给git进行了版本控制

 

5.检查上传到github的项目是否忽略了venv文件夹,1.py,demoTest.py

 

这次只把.gitignore文件上传到github了

 

posted @ 2019-06-04 15:14  wangju003  阅读(3499)  评论(0编辑  收藏  举报