删除文件(第9篇)

前面说了,在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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 13,740评论 9 163
  • 1.git的安装 1.1 在Windows上安装Git msysgit是Windows版的Git,从https:/...
    落魂灬阅读 12,731评论 4 54
  • 沉住气,做微笑面面 这次面试总结: 1更新简历这里,不要说时间问题,而是针对这次财务岗位做了一些调整,以便更加契合...
    温柔以待世界阅读 291评论 0 0
  • 团队管理中有很多问题,每个员工有每个员工的个性,俗话说:十个指头都有长短,何况人呼?在一个团队中,总有些员工做得好...
    内容汪阅读 499评论 0 2
  • 作为一个男孩子的妈妈,其实,我的内心是焦虑的,但无数次的面对儿子时,我都告诫自己,他是个男孩子,他是个聪明敏...
    一米69阅读 556评论 4 9