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. Oracle11g R2学习系列 之十 解决EM不能用

    不知道是什么原因https://localhost:1158/em,今天突然就不能用了.做了好多搜索也没有解决.现象是在services.msc中,不能重启OracleDBConsole服务,提示: ...

  2. IE attachEvent事件处理程序(事件绑定的函数)的this指向的是window不是执行当前事件的dom元素

    IE attachEvent事件处理程序(事件绑定的函数)的this指向的是window不是执行当前事件的dom元素. attachEvent(type,listener); listener函数中的 ...

  3. 03--理解HelloWorld结构

    作为程序猿还是要代码来说事的,现在开始进入到具体的代码中来.国际惯例HelloWorld打头阵,我也不能免这个俗. Win32入口函数中主要代码如下: main.cpp // 创建应用实例 AppDe ...

  4. linux修改密码

    情景:Linux 服务器上用户的密码被服务器管理员发现太过简单,需要重置密码.处理时为了方便记忆,就直接使用普通用户登录,修改密码时,在原密码的基础上增加一串特定的数字,结果提示不通过.例如出现错误提 ...

  5. Masonry + Ajax 实现无限刷新瀑布流

    效果就如我的个人站yooao.cc,把我实现的思路分享给大家. Masonry渲染页面如果有图片时需要imagesLoaded辅助,不然有可能会造成布局重叠. 一个大体的思路:前端取得最后一篇文章的i ...

  6. ACM ICPC Team

    Link: https://www.hackerrank.com/challenges/acm-icpc-team/submissions/code/11617807 def count_max_to ...

  7. 库函数 Math

    int abs( int num ); double fabs( double arg ); long labs( long num ); 函数返回num的绝对值   #include <mat ...

  8. Android 代码编辑器中实现代码语法高亮

    想写一款Android手机上的代码编辑器,实现类似c4droid中代码语法高亮 通过Android中的控件WebView中嵌入html网页,html引入CodeMirror这个第三方库就可以了,其实就 ...

  9. ET 与RETI 基于51单片机中断跳出指令“RETI”浅议

    最近在基于51单片机编程的过程中出现了个很奇怪的问题“程序执行中在寄存器EA=1,ET0=1,TR0=1条件下,单TF0=1时并没有执行中断”.在有过单片机中断编程经历者都知道当EA=1,ET0=1的 ...

  10. Unix,windows和Mac中的换行

    Unix 系统里,每行结尾只有“<换行>”,即“\n”:Windows系统里面,每行结尾是“<换行><回车 >”,即“\r\n”:Mac系统里,每行结尾是“< ...