git rm与rm的区别是什么1呢?各自代表什么含义,又分别是在什么时候或应用场景使用?
要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除(确切地说,是从暂存区域移除),然后提交。 可以用 git rm 命令完成此项工作,并连带从工作目录中删除指定的文件,这样以后就不会出现在未跟踪文件清单中了。
如果只是简单地从工作目录中手工删除文件:
$ rm PROJECTS.md
然后再运行 git rm 记录此次移除文件的操作:
$ git rm PROJECTS.md rm 'PROJECTS.md'
下一次提交时,该文件就不再纳入版本管理了。 如果要删除之前修改过或已经放到暂存区的文件,则必须使用强制删除选项 -f(译注:即 force 的首字母)。 这是一种安全特性,用于防止误删尚未添加到快照的数据,这样的数据不能被 Git 恢复。
另外一种情况是,我们想把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中。 换句话说,你想让文件保留在磁盘,但是并不想让 Git 继续跟踪。 当你忘记添加 .gitignore 文件,不小心把一个很大的日志文件或一堆 .a 这样的编译生成文件添加到暂存区时,这一做法尤其有用。 为达到这一目的,使用 --cached 选项:
$ git rm --cached README
git rm 可用于删除.git对于文件的跟踪。
rm 是系统的删除文件。
git的工作流程一般是这样的:
1、在工作目录中添加、修改文件;
2、将需要进行版本管理的文件放入暂存区域;
3、将暂存区域的文件提交到git仓库。
因此,git管理的文件有四种状态:未跟踪(Untracked)、已修改(Modified),已暂存(Staged),已提交(committed)
git rm和rm之间的差别如下:
git rm是用于从Git仓库中删除文件,可以将删除的操作提交到暂存区和仓库;rm是用于删除文件(夹),只删除工作区中的文件,不会把删除操作提交到Git仓库中。
使用git rm命令删除文件时,该文件的删除记录会被记录在暂存区和仓库中,同时通过该命令可以删除远程仓库中已经提交的文件。而使用rm命令删除文件后,需要手动使用git add和git commit来把删除操作提交到Git仓库中。
git rm命令可以删除整个文件夹,使用“-r”选项可以递归删除一个文件夹中的所有文件和子文件夹;使用rm命令只能逐个删除文件或文件夹,不支持递归删除。
示例代码:
# 删除README.txt文件
$ git rm README.txt
# 提交删除操作到暂存区和仓库
$ git commit -m "delete README.txt"
# 删除README.txt文件并提交删除操作到Git仓库
$ rm README.txt
$ git add README.txt
$ git commit -m "delete README.txt"
# 递归删除dist文件夹中的所有文件和子文件夹
$ git rm -r dist
# 提交删除操作到暂存区和仓库
$ git commit -m "delete dist folder"