Day10|【Git】档案管理 - 删除档案 git rm

开始前,先提个小小的观念:

✏️ 在 Git 的世界里,不管是新增、删除或重新命名,都可以看为是一个「修改」的动作。

因此这篇所要介绍的删除档案指令 git rm 观念其实跟之前有提到的新增档案後提交是一样的唷!

复习一下之前新增档案与提交的过程 :

新增一个档案 > git add (暂时区) > git commit(储存区)
git add - 告知 git ,我们要「新增」的档案有哪些

将此观念套用到删除档案 git rm

删除一个档案 > git rm (暂时区) > git commit(储存区)
git rm - 告知 git ,我们要「删除」的档案有哪些

这里可以得到一个流程概念:

当我们要从 GIt 中删除一个档案时,档案需要是已追踪的档案状态,并且在 暂存区Staging Area) 操作。

如果档案还在工作目录区时,执行 git rm 指令,会出现什麽讯息呢?

https://ithelp.ithome.com.tw/upload/images/20210924/20141010n6qjbuiedV.png

可以得到几个参数,这些参数内容可以观看 Git 文章说明 ,同时也有介绍到之後有哪些方法可以顺利删除档案,在这里我们只要记得,如果使用 git rm 指令,要确认档案是在 暂存区Staging Area) 才能正确执行。


删除档案 git rm

rm 为 remove 的意思

🛠 实际操作

直接删除档案 rm

  1. 现在资料夹里有一个 helloGit.html 档案

    https://ithelp.ithome.com.tw/upload/images/20210924/20141010D6ZVaQu26T.png

  2. 使用 rm 系统指令,直接删除档案

    $ rm helloGit.html # 删除档案 helloGit.html
    // rm + [档案名称]
    

    https://ithelp.ithome.com.tw/upload/images/20210924/20141010Ly1nroLXIy.png

  3. 查看状态 git status

    $ git status # 查看档案状态
    

    https://ithelp.ithome.com.tw/upload/images/20210924/20141010TSlPyPiPwe.png

    此时的档案状态为:Changes not staged for commit (deleted)

    Changes not staged for commit - 已更改 - 代表我们原本已经提交的版本,却又再次修改(这里的修改动作是删除),所以这些档案会被丢回工作目录WD)。因此我们需要再将档案加入暂存区,并再次提交版本。

  4. 使用 git add 加到暂存区,再查看状态

    $ git add . # 将(在工作目录的)档案加至暂存区
    //Enter 後
    $ git status # 查看档案状态
    

    https://ithelp.ithome.com.tw/upload/images/20210924/20141010ob0N1bOZgb.png

    此时的档案状态为:Changes to be committed(deleted)

    Changes to be committed - 等待提交 - 原先在工作目录区的档案经由 git add 指令後,被放置在暂存区(Staging Area),这时候档案状态变成等待着提交。接下来就只要执行 git commit 指令就可以提交完成罗!

    这边补充一下,有查询到其他文章说,本来 git add 是不能将删除的档案加入至暂存区,正确方式是使用 git add -u 指令来加入被更动的档案,包含 modified 及 deleted 档案。不过现在某些新版的 Git 是已经可以直接使用 fit add 指令来新增要被删除的档案。

    $ git add -u        # 一次加入所有被更动的档案,包含 modified 及 deleted
    $ git add --update  # 同上
    // -u **等同於** --update
    
  5. 使用 git commit 指令将档案提交至储存库

    $ git commit -m"del file" # 提交档案 - "纪录讯息"
    

    https://ithelp.ithome.com.tw/upload/images/20210924/20141010ywu9nzfLyP.png

    档案提交後讯息回馈 - 提交到 master 、 SHA-1 校验码为 5ef6a5f 、一个档案被更动

    执行完後可以打开资料夹检查,会发现档案不见罗!

请 Git 帮忙删除档案 git rm

  1. 现在 git_practice 资料夹里有个 helloGit2.html 档案

    https://ithelp.ithome.com.tw/upload/images/20210924/20141010mTewxr0OmB.png

  2. 使用 git rm 指令,请 Git 帮忙删除档案

    $ git rm helloGit2.html # 删除档案 helloGit2.html
    

    https://ithelp.ithome.com.tw/upload/images/20210924/201410107FlxJbQvAW.png

    按下 Enter 後,终端机会回馈讯息 - rm 'helloGit2.html'

  3. 查看状态 git status - changes to be committed / deleted

    $ git status # 查看档案状态
    

    https://ithelp.ithome.com.tw/upload/images/20210924/20141010URc0bjmYsO.png

    此时的档案状态为:Changes to be committed(deleted) - 等待提交

    跟上一个方法一样,但是直接透过 git rm 指令,我们可以减少一次步骤,直接加至暂存区(Staging Area)。

  4. 使用 git commit 指令将档案提交至储存库

    $ git commit -m"del file" # 提交档案 - "纪录讯息"
    

    https://ithelp.ithome.com.tw/upload/images/20210924/20141010lEkQdmlo1h.png

    这样整个使用 git 删除档案的流程就完成了,我们也可以再次使用 git status 指令看看现在的档案状态

    https://ithelp.ithome.com.tw/upload/images/20210924/201410103potaJxOia.png

    nothing to commit - 没有档案内容可以提交

💡 总结:
两者差异 -> git rm 可将原本两段式需要透过 git add 提交的动作,直接缩短成一个指令。


加上 --cached 参数 - 想要让档案不再被 Git 版本控制,而不是真的完全删除

当我们使用 rm 、 git rn 指令时,可以发现在资料夹上的工作目录都是直接将档案移除,如果今天只是想让档案不再被 Git 控管,但是档案依然留在资料夹里,那麽可以使用 --cached 参数执行我们的需求。

$ git rm file.html --cached # 移除 file.html 将之不再被 git 控管

确认现在有个 file.html 档案是被 Git 控管的

https://ithelp.ithome.com.tw/upload/images/20210924/20141010tpq8rYyoWX.png

输入指令,并使用 git status 检查档案状态

https://ithelp.ithome.com.tw/upload/images/20210924/20141010GDwk4ioAAa.png

可以发现 file.html 档案状态变更成 Untracked ,代表现在没有被 Git 版本追踪。


<<:  [day9]API就位罗~串接永丰API规划

>>:  Android学习笔记15

JavaScript入门 Day02_如何撰写

首先要写 JavaScript 肯定要有编辑器,Visual Studio Code 是个好选择 再...

sed - 6 Hold Space简介

前篇回顾 sed - 简介 读取编辑文字档的好工具 sed - 2 Pattern sed - 3 ...

IOS、Python自学心得30天 Day-14 H5与Pb模型档案

前言: 因为内存不足以在训练的时候存 SavedModel模型 所以我分离出来 以.h5档案先做训练...

Day12 虚拟记忆体的介绍

前言 前几天都在讲实体记忆体(physical memory)该如何分配,但是在有越来越多行程同时运...

业务驱动者与致能者(Business Drivers and Enablers)

业务(business)就是有关产品和服务交付(delivery),以创造价值并实现组织愿景和使命...