向远程仓库(如github)提交了如下文件src/ ,pom.xml ,target/, WebContent/,忘记了写.gitignore文件,发现没必要提交target目录。
那么该如何删除github上对应的文件夹或文件,而保留本地的呢?
-
先删除远程仓库内的的文件/文件夹
于是做了如下操作: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
-
配置.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/ 目录