美文网首页
删除文件(第9篇)

删除文件(第9篇)

作者: 你好星期四 | 来源:发表于2016-03-28 19:06 被阅读79次

前面说了,在Git的世界里,有三个地方:工作区,暂存区和版本库。Git的目标就是让工作区里的东西和版本库里的东西变得一样。你在工作区里修改了一个文件,你最终也希望版本库里也做了相应的修改。
这是没有问题的。

如果要删除文件呢?

事实上,删除文件也是一种修改,因为工作区里的东西发生了变化。

举个例子,我们新创建一个文件,然后git add,再git commit:

$ touch new_file.md
$ git add new_file.md
$ git commit -m "add new_file.md"
[master 9e623e1] add new_file.md
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 new_file.md

然后你再把它删了

$ rm -f new_file.md

这时候Git发现你在工作目录里删了一个文件,但是Git的版本库里仍然还存在着new_file.md。

$ git status
On branch master
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
 
        deleted:    new_file.md
 
no changes added to commit (use "git add" and/or "git commit -a")

如果你确定真的要把new_file.md删除掉,那就需要使用另一个命令:
git rm file

$ git rm new_file.md
rm 'new_file.md'

还没完,你再git status一下,发现你的操作还没有正式提交:

$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
 
        deleted:    new_file.md
 

你需要再次git commit

$ git commit -m "remove new_file.md"
[master 81fee10] remove new_file.md
1 file changed, 0 insertions(+), 0 deletions(-)
delete mode 100644 new_file.md

现在new_file.md已经真正的从版本库中删除了。

你可能会问:你不是说,删除也是一种修改吗?那么为什么不能像其他类型的修改一样,直接git add再git commit呢?还需要为删除特意弄一个命令git rm干什么?这不多此一举吗?

你这样问是合理的,但是你别忘了,git add命令后面要加一个文件名作为参数,表示说要把某个文件添加到暂存区,而你都已经把这个文件删除了,你又要到哪里去找这个文件呢?不是吗?既然工作区里的这个文件没了,而版本库里还有,你只能手动的把版本库里的删掉。

如果你在工作区删了一个文件以后,又后悔了,想恢复它怎么办?那很简单,git checkout -- file,把工作区的“修改”杀掉,这样删掉的文件又回到了工作区。但是你只能恢复文件到最新版本。

如果喜欢的话,可以关注我的微博http://weibo.com/qiaoer2017

相关文章

  • Linux命令21天打卡,第15天0306

    第15天作业 , 命令 rm rm是常用的命令,该命令的功能为删除目录/文件(可同时删除,多个文件 / 多个目录)...

  • 软件测试必备Linux:21天掌握Linux命令 15 rm

    第15天作业 , 命令 rm rm是常用的命令,该命令的功能为删除目录/文件(可同时删除,多个文件 / 多个目录)...

  • git命令介绍

    一、永久删除仓库文件步骤 1、删除文件 例如删除1.txt: 删除文件夹 例如删除a/b: 如果路径文件名或文件夹...

  • 2-10 Linux 中的文件处理 --- rm 删除命令

    rm:删除文件 或 文件夹。 -f :强制删除。 -r :删除文件夹。 删除文件: 例:test1 目录下...

  • SVN 显示的文件状态

    svn st 显示的文件状态 第1列状态说明:描述文件被添加、删除或其他修改 ------------------...

  • Linux基本命令补充

    10.rm 删除文件``rm 删除文件,会询问是否删除rm -f 删除文件,不会询问是否删除rm -rf /* 自...

  • node 递归删除指定文件夹下的所有文件

    node 里边可以删除文件、文件夹、但不能删除带文件的文件夹,如下代码:先删除掉文件夹下的文件,最后再删除文件夹,...

  • VS无法连接到已配置的开发web服务器

    删除项目下的.vs文件 删除项目下的.vs文件 删除项目下的.vs文件 删除项目下的.vs文件 删除项目下的.vs...

  • Java打卡第一天

    在dos 命令里删除文件夹必须保证这个文件夹是空的。 rd 删除文件夹 del 删除文件 del+文件夹:删除文件...

  • 常用Linux命令

    文件复制 文件远程复制 删除 删除文件 删除非空文件夹 文件移动 移动文件 移动文件夹下的所有 文件远程复制 用户...

网友评论

      本文标题:删除文件(第9篇)

      本文链接:https://www.haomeiwen.com/subject/rmgjlttx.html