情况一:文档库中还没加入任何文件,也就是执行 “git init” 之后,还没有执行过 “git commit” 。
指令:git rm --cached 文件名
原理:”git rm 文件名“这条指令,Git 会执行两项检查:
1.Git 索引中有没有该文件的内容(刚刚有没有执行过 “git add 文件名” ),如果有,表示这个文件的内容和文档库中的不一样,为了避免遗失数据,Git 会显示提示信息,然后放弃执行。
2. 文件夹中的文件内容是不是和数据库中的一样,如果不一样,Git 同样会显示提示信息,然后放弃执行,以免遗失数据。
如果通过以上的两项检查,Git 会马上删除文件夹中的文件,然后在索引中记录要从文档库中删除该文件。若这时候执行 “git status”则会显示删除信息,最后必须在执行 “git commit” 指令,才会真正从文档库中删除文件(提示:可以从文档库的历史版本中取回该文件)。
“git rm --cached 文件名” 这条指令 表示从此以后不需要在文档库中更新这个文件,也就是这个文件将从 tracked 状态转变成 untracked 状态。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
情况二:文档库中已经有文件了,也就是已经执行过 “git commit” 指令。
指令:git reset HEAD 文件名
原理:删除最新节点而不改变该文件的状态。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------