美文网首页
删除文件(第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

    相关文章

      网友评论

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

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