.gitignore无效解决方案以及git rm和rm的区别

一. gitignore

先来了解一下gitignore的常用语法

  斜杠“/”表示目录, 是否已斜杠开头有很大区别,如 /build 与 build/ 的区别:其中 build/ 表示不管在哪个位置的 build 目录都会被忽略;

  星号“*”通配多个字符;

  问号“?”通配单个字符

  方括号“[]”包含单个字符的匹配列表;

  叹号“!”表示取反,即不忽略(跟踪)匹配到的文件或目录;

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

  比如:1)规则:myfolder/* 
     说明:忽略目录 myfolder 下的全部内容;不管是根目录(.gitignore文件所在的目录)下的 /myfolder/ 目录,还是某个子目录 /child/myfolder/ 目录,都会被忽略;

  (2)规则:/myfolder/* 
     说明:只忽略根目录下的 /myfolder/ 目录的全部内容;

但是有时候在.gitignore中新添加规则然后运行 git add . 还是会将不想要的文件添加进去,这是因为.gitignore还没有生效(因为版本控制不会因为你现在修改了.gitignore文件而将你已经添加进去的文件删除),不过可以这样(一定要先commit,不然所做的修改会丢失!)

git commit -am "commit everything first!"

git rm -r --cached . // 这里会从git仓库中清除所有文件,而不是从硬盘上删除文件

git add . // 这里又将所有文件添加进git仓库,同时.gitignore规则会生效

git commit -m "fixed untracked files"

 二. git rm 和 rm 区别

1. git rm 删除文件,会将该删除操作记录下来

 删除后,执行git commit -m 时,会自动将删除该文件的操作提交;

2. rm 删除文件,仅仅是删除了物理文件,并没有将其从git记录中删除

 执行rm删除文件后,单纯执行git commit -m 时,不会将删除记录提交,可执行以下命令:

   git commit -am 'remove file' 才会将删除文件的操作提交

 

转载于:https://www.cnblogs.com/fancyLee/p/9009822.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值