git正确的删除远程仓库的文件并用.gitignore忽略提交此文件

向远程仓库(如github)提交了如下文件src/ ,pom.xml ,target/, WebContent/,忘记了写.gitignore文件,发现没必要提交target目录。
那么该如何删除github上对应的文件夹或文件,而保留本地的呢?

  1. 先删除远程仓库内的的文件/文件夹
    于是做了如下操作:

    git rm -r --cached target
    git commit -m "delete target/"
    git push origin master
    

    打开github看一下,target目录是不是没有提交了!

    注: git rm 与git rm --cached

    当我们需要删除暂存区或分支上的文件, 同时工作区也不需要这个文件了, 可以使用

    git rm file_path
    git commit -m 'delete somefile'
    git push
    

    当我们需要删除暂存区或分支上的文件, 但本地又需要使用, 只是不希望这个文件被版本控制, 可以使用

    git rm --cached file_path
    git commit -m 'delete remote somefile'
    git push
    
  2. 配置.gitignore文件
    以后都不用提交target目录,可以作如下

    vi  .gitignore  
     #写入:
     target/
     #可以在.gitignore中写入我们不想提交的文件或目录
     #保存退出
    git add .gitignore
    git commit -m "write .gitignore"
    git push origin master
    

gitignore配置文件用于配置不需要加入版本管理的文件,配置好该文件可以为版本管理带来很大的便利,以下是对于配置.gitignore的一些心得记录:
1)配置语法:
以斜杠“/”开头表示目录;
以星号“*”通配多个字符;
以问号“?”通配单个字符
以方括号“[]”包含单个字符的匹配列表;
以叹号“!”表示不忽略(跟踪)匹配到的文件或目录;

此外,git 对于 .ignore 配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效;

2)示例说明
a)规则:fd1/*
说明:忽略目录 fd1 下的全部内容;注意,不管是根目录下的 /fd1/ 目录,还是某个子目录 /child/fd1/ 目录,都会被忽略;
b)规则:/fd1/*
说明:忽略根目录下的 /fd1/ 目录的全部内容;
c)规则:
/*
!.gitignore
!/fw/bin/
!/fw/sf/
说明:忽略全部内容,但是不忽略 .gitignore 文件、根目录下的 /fw/bin/ 和 /fw/sf/ 目录

参考:https://www.cnblogs.com/YangJieCheng/p/8175761.html

你可能感兴趣的:(Git)