zoukankan      html  css  js  c++  java
  • 删除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了

  • 相关阅读:
    静下来好好学习
    深入学习Redis主从复制
    深入学习Redis持久化
    TPS、并发用户数、吞吐量关系
    P1067 多项式输出
    P1014 Cantor表
    P2089 烤鸡
    P1579 哥德巴赫猜想(升级版)
    P1217 [USACO1.5]回文质数 Prime Palindromes
    校内比赛 城市交通费
  • 原文地址:https://www.cnblogs.com/kaerxifa/p/10973731.html
Copyright © 2011-2022 走看看