git rm可以执行删除的条件(前提是要被删除的文件还没有从workspace tree中移除)

git rm可以执行删除的条件:被删除文件在index当中的blob内容必须与HEAD commit指向的blob内容以及workspace tree中的文件内容一致,换句话说即当运行git status时,被删除的文件不能出现在git status的输出当中。

git rm --cached可以执行删除的条件:被删除的文件在index当中的blob内容与HEAD commit指向的blob内容一致,或者index当中的blob内容与workspace tree中的文件内容一致,换句话说即当运行git status时,被删除的文件不能同时出现在Changes to be committed和Changed but not updated当中。

从index当中删除已经不再worksapce tree当中的文件

如果没有使用git rm删除,而是直接使用rm删除文件,那么,该文件只是从workspace tree当中被删除了,而没有从index当中删除,这时的解决办法有5个:

1) 执行git rm --cached 或者git rm命令;

2) 执行git commit -a命令;

3)执行git add -u;

4)执行git add -A命令;

5)执行git commit -m msg;

git glob的扩展

glob在git中有两种扩展方式,一种是使用shell的扩展方式,另一种是git自己扩展,比如有下面的文件结构

d

|

-----------------------

|                               |

hello.txt                     dd

|

hello.txt

此时git rm d/*.txt只会删除d/hello.txt,而不会同时删除d/dd/hello.txt,因为此时glob进行的是shell扩展,而shell 扩展不会匹配/;如果使用git rm d/\*.txt,则会同时删除d/hello.txt, d/dd/hello.txt,由于在*前面加入了\字符,此时进行的是git扩展,git扩展可以匹配/。

但是这里有一个疑问就是如果使用git rm *.txt或者git rm d*.txt,即使在*前面没有加入\,d/hello.txt和d/dd/hello.txt都会被删除

git rm的更多相关文章

  1. git rm–r folder fatal:pathspec "" did not match any files

    问题描述: 某年某月某日,在查看git库的时候,发现文件的分布和文件夹的名字是极其不合理的,所以移动和重命名了某些文件. 在删除(git rm –r folder)一个空文件夹的时候,出现错误:fat ...

  2. 对比git rm和rm的使用区别

    在这里说一下git rm和rm的区别,虽然觉得这个问题有点肤浅,但对于刚接触git不久的朋友来说还是有必要的. 用 git rm 来删除文件,同时还会将这个删除操作记录下来:用 rm 来删除文件,仅仅 ...

  3. git rm –cached filename

    为了能重新忽略那些已经被track的文件,例如停止tracking一个文件但是又不从仓库中删除它.可以使用以下命令: 代码如下 git rm –cached filename 上面这个命令用于删除单个 ...

  4. "git rm" 和 "rm" 的区别

    "git rm" 和 "rm" 的区别 FEB 3RD, 2013 | COMMENTS 这是一个比较肤浅的问题,但对于 git 初学者来说,还是有必要提一下的 ...

  5. [转]"git rm" 和 "rm" 的区别

    用 git rm 来删除文件,同时还会将这个删除操作记录下来 直观的来讲,git rm 删除过的文件,执行 git commit -m "abc" 提交时, 会自动将删除该文件的操 ...

  6. 移除文件(git rm)

    git rm`命令会把文件从已跟踪列表(及暂存区)中移除,并且移除把文件从工作目录中移除,这样下一次你就不会在未跟踪文件列表中看到这些文件了. 如果你只是简单的把文件从工作目录移除,而没有使用git ...

  7. Git使用详细教程(4):git rm使用详解

    我们使用git rm 文件名来进行删除文件的操作. git rm index.php这个命令把工作区的index.php删除并暂存了. 如何撤回已暂存的删除命令? 上图中已经给出了提示,使用git r ...

  8. 第23月第24天 git命令 .git-credentials git rm --cached git stash clear

    在git push的时候,有时候我们会想办法撤销git commit的内容 1.找到之前提交的git commit的id git log 找到想要撤销的id 2.git reset –hard id ...

  9. [转] git rm与git rm --cached

    当我们需要删除暂存区或分支上的文件, 同时工作区也不需要这个文件了, 可以使用 git rm file_path 当我们需要删除暂存区或分支上的文件, 但本地又需要使用, 只是不希望这个文件被版本控制 ...

随机推荐

  1. 给软件增加注册功能 c#

    1.软件注册类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...

  2. 简单的thinkPHP3.2运行实例。

    在上一篇的环境基础下. 我们用zendstudio12.5版本编写我们的代码.具体的下载方式在这里就不多做注明了.自己百度就可以搞定. 首先我们用zendstudio12.5 导入我们从网上随处都可以 ...

  3. 利用java反射机制对方法进行调用

    http://blog.csdn.net/coolcoffee168/article/details/5835143

  4. #include<iostream>与#include<iostream.h>的区别

                                           转载于祝长洋的BLOG:http://blog.sina.com.cn/s/blog_514b5f600100ayks.h ...

  5. LeetCode_Recover Binary Search Tree

    Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without changing ...

  6. 《Programming WPF》翻译 第5章 8.我们进行到哪里了?

    原文:<Programming WPF>翻译 第5章 8.我们进行到哪里了? 样式支持你定义一个策略来设置可视化元素的依赖属性.属性的设置可以被命名以及手动或者编程方式地通过名称应用,或者 ...

  7. VS2010中使用QtOpenGL出现 unresolved external symbol __imp__glClear@4 referenced in function之类的错误

    描述: 链接了QtOpenGL4.lib QtOpend4.lib的库啊,居然还是发生此错误. 原因是没有链接OpenGL32.lib这个库.所以,要添加这个lib 重新rebuild的一下,此类的错 ...

  8. 5.1.1 读取Redis 数据

    Redis 服务器是Logstash 推荐的Broker选择,Broker 角色就意味会同时存在输入和输出两个插件. 5.1.1 读取Redis 数据 LogStash::Input::Redis 支 ...

  9. 【转】android4.1.2 CTS测试总结

    原文网址:http://blog.csdn.net/bboyliaoye/article/details/17299259 公司客户的产品要过google GMS认证,首先要过的就是兼容性测试(CTS ...

  10. C# 调用外部程序,并获取输出和错误信息

    1. 同步模式 public void exec(string exePath, string parameters) { System.Diagnostics.ProcessStartInfo ps ...