Git基础学习之文件删除操作命令详解

目录
  • 1、删除文件说明
  • 2、删除文件操作
    • (1)仅删除暂存区的文件
    • (2)完全删除文件
  • 3、本文用到的命令总结

1、删除文件说明

在Git工作目录中要删除某个文件,首先要清楚该文件所处的状态。

若要是该文件未被Git管理,在工作区直接进行删除即可。(不演示)

但是,若该文件已经经过多次git addgit commit操作后,就必须要从已跟踪文件清单中删除(确切地说,是在暂存区中删除),然后提交。

可以用git rm命令完成此项工作,并连带从工作目录中删除指定的文件,这样文件之后就不会出现在未跟踪文件清单中了。

2、删除文件操作

(1)仅删除暂存区的文件

1)创建文件,提交到版本库

# 1.创建delete.html文件
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ echo "delete file test" >> delete.html

# 2.把delete.html文件提交到本地版本库中
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git add delete.html
warning: LF will be replaced by CRLF in delete.html.
The file will have its original line endings in your working directory

L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git commit -m '新增delete.html文件'
[master 262df2c] 新增delete.html文件
 1 file changed, 1 insertion(+)
 create mode 100644 delete.html

L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git status
On branch master
nothing to commit, working tree clean

2)查看暂存区和本地版本库中的文件列表

# 1.查看暂存区中的文件列表
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git ls-files
delete.html
readme.txt

# 2.查看本地版本库中的文件列表
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git ls-files --with-tree=HEAD
delete.html
readme.txt

我们可以看到暂存区和本地版本库中都是delete.htmlreadme.txt两个文件。

说明命令:git ls-files --with-tree=HEAD

该命令实际上查看的是,当前工作分支上,HEAD指针所指向的,时间节点中的文件列表。若查看上一个时间节点中的文件列表,则可将HEAD替换为HEAD^,当然也可以使用HEAD~n

3)仅删除暂存区中delete.html文件

使用git rm --cached命令,该命令可以仅删除暂存区中的指定文件。

L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git rm --cached delete.html
rm 'delete.html'

4)再次查看暂存区和本地版本库中的文件列表

# 1.查看暂存区中的文件列表
$ git ls-files
readme.txt

# 2.查看本地版本库中的文件列表
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git ls-files --with-tree=HEAD
delete.html
readme.txt

我们可以看到暂存区中已经没有了delete.html文件,但本地版本库中还存在。

此时,通过git commit命令进行提交,可以将本地库中的文件文件也删除。

5)恢复被删除delete.html文件

此时工作区中的delete.html文件还没有被删除,如下:

# 也可以使用ll命令查看
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        deleted:    delete.html	# 已删除

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        delete.html	# 未被追踪

此时最简单的恢复方式是,将delete.html文件git add到暂存区,再git commit提交到本地版本库中。(我的理解是,把delete.html文件添加到暂存区,这一步就让delete.html文件恢复了,因为此时工作区,暂存区,版本库中的delete.html文件都是一样的。在执行git commit提交,也没有什么意思了。大家可以自己也思考一下。)

下面我们使用git reset命令进行恢复。

执行命令git reset HEAD,即执行的完全命令为git reset --mixed HEAD

# 1.版本回退
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git reset HEAD

# 2.查看暂存区中的文件列表
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git ls-files
delete.html
readme.txt

L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git status
On branch master
nothing to commit, working tree clean

可以看到暂存区中的delete.html文件已恢复。

(2)完全删除文件

所谓完全删除文件,指的是将工作区、暂存区和本地库中的指定文件一次性都删除。

1)删除delete.html文件

使用命令git rm filename

# 接上面示例
# 1.完全删除delete.html文件
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git rm delete.html
rm 'delete.html'

# 2.查看暂存区中的文件列表
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git ls-files
readme.txt

# 3.查看本地版本库中的文件列表
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git ls-files --with-tree=HEAD
delete.html
readme.txt

# 4.查看工作区中的文件列表
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ ll
total 1
-rw-r--r-- 1 L 197121 80  4月 15 17:34 readme.txt

# 5.查看工作目录中的文件状态
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        deleted:    delete.html

我们可以工作区和暂存区中的delete.html文件都已经被删除,但是本地版本库中的delete.html文件还存在。

我们查看了当前工作目录中的文件状态,发现delete.html文件是已删除状态。

因此若要将本地版本库中的delete.html文件删除,直接commit提交即可。

# 提交操作
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git commit -m '删除 delete.html文件'
[master fdcb771] 删除 delete.html文件
 1 file changed, 1 deletion(-)
 delete mode 100644 delete.html

L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git status
On branch master
nothing to commit, working tree clean

# 查看工作目录文件
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ ll
total 1
-rw-r--r-- 1 L 197121 80  4月 15 17:34 readme.txt

说明delete.html文件已经被彻底删除了。

3、本文用到的命令总结

git ls-files:查看暂存区中的文件列表。

git ls-files --with-tree=HEAD:查看本地版本库中的文件列表。(文中有使用说明)

git rm --cached filename:仅删除暂存区中的文件。

git rm filename:删除工作区和暂存区的文件。

到此这篇关于Git基础学习之文件删除操作命令详解的文章就介绍到这了,更多相关Git文件删除操作内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Git 删除远程服务器文件同时保留本地文件实例详解

    Git 如何删除远程服务器文件同时保留本地文件 在上传工程到git上时,有时候会把本地的一些eclipse配置文件传到服务器上,这时你先删除本地,再同步服务器,显然是不合理的.git提供了一个好的解决方法,可以直接删除服务器文件,同时不影响本地文件,命令如下 git rm --cached filename/-r directory git commit "xxxx" git push 1.删除服务器文件,本地保留 git rm --cached useless.log git com

  • git丢弃本地修改的所有文件(新增、删除、修改)

    一,未使用 git add 缓存代码时. 可以使用 git checkout -- filepathname (比如: git checkout -- readme.md  ,不要忘记中间的 "--" ,不写就成了检出分支了!!).放弃所有的文件修改可以使用 git checkout .  命令. 此命令用来放弃掉所有还没有加入到缓存区(就是 git add 命令)的修改:内容修改与整个文件删除.但是此命令不会删除掉刚新建的文件.因为刚新建的文件还没已有加入到 git 的管理系统中.所

  • Git如何删除历史记录中的大文件详解

    前言 Git 作为一个分布式的版本管理工具,代码仓库中是会保存所有历史记录的.虽然,Git 的 .gitignore 文件里可以定义一些忽略文件的规则,但是,在我们提交代码的过程中,总会不小心误提一些没用的文件,如果文件中存在大文件,就会导致:就算我们把它删了重新提交,.git 文件夹依然会占用较大的空间. 如何解决这个问题呢?其实,Git 已经为我们提供了解决方案,就是被称为核弹级的命令 filter-branch.这个命令可以用来修改历史提交记录,把不需要的文件永久地从历史记录中删除. 方法

  • Git 撤销操作、删除文件和恢复文件

    大致介绍 经过前面的学习,已经建立了版本库,并上传了文件,这次来学习对这些文件进行基本的操作,即: ◆ 撤销操作 ◆ 删除文件 ◆ 恢复文件 我在此之前,已经将三个文件提交到了版本库 撤销操作 撤销操作的语法: git checkout -- 文件名 撤销操作一般有两种情况: ◆ 文件修改后还没有提交到暂存区,进行撤销操作之后,文件恢复到和版本库中一模一样 ◆文件修改后提交到了暂存区,进行撤销之后,文件恢复到在提交到暂存区之前的状态 现在index.htm中的内容是: index.html 我们

  • Git基础学习之文件删除操作命令详解

    目录 1.删除文件说明 2.删除文件操作 (1)仅删除暂存区的文件 (2)完全删除文件 3.本文用到的命令总结 1.删除文件说明 在Git工作目录中要删除某个文件,首先要清楚该文件所处的状态. 若要是该文件未被Git管理,在工作区直接进行删除即可.(不演示) 但是,若该文件已经经过多次git add与git commit操作后,就必须要从已跟踪文件清单中删除(确切地说,是在暂存区中删除),然后提交. 可以用git rm命令完成此项工作,并连带从工作目录中删除指定的文件,这样文件之后就不会出现在未

  • Git基础学习之tag标签操作详解

    目录 共享标签 推送本地的指定标签 推送本地所有为推送的标签 查看结果 删除标签 删除本地标签 删除远程标签 修改标签指定提交的代码 标签在.git目录中的位置 本文中所使用到的命令 共享标签 默认情况下,git push 命令并不会传送标签到远程仓库服务器上. 在创建完标签后,你必须显式地(手动)推送标签到远程服务器上. 需要将标签推送到远程版本库作为一个发行版本,可以通过以下两种方式: 推送本地的指定标签 这个过程就像共享远程分支一样,你可以执行命令: git push origin <ta

  • Java web基础学习之开发环境篇(详解)

    Tomcat + Eclipse添加Java EE插件 因为之前进行Java SE学习已经配置了JDK,安装了Eclipse for Java SE,所以选择了在Eclipse上添加插件的方式来配置Web开发环境 Tomcat是免安装版,直接解压即可: Eclipse中"帮助-安装新软件",work with处选择Mars - http://download.eclipse.org/releases/mars(注意对应自己版本): 选择Web.Java EE那个选项进行安装即可,如果报

  • Python学习之文件的读取详解

    目录 文件读取的模式 文件对象的读取方法 使用 read() 函数一次性读取文件全部内容 使用 readlines() 函数 读取文件内容 使用 readline() 函数 逐行读取文件内容 mode().name().closed() 函数演示 文件读取小实战 with open() 函数 利用with open() 函数读取文件的小实战 上一章节 我们学习了如何利用 open() 函数创建一个文件,以及如何在文件内写入内容:今天我们就来了解一下如何将文件中的内容读取出去来的方法. 文件读取的

  • Go语言基础学习之数组的使用详解

    目录 1. Array(数组) 2. 声明数组 3. 数组初始化 3.1 方式一 3.2 方式二 3.3 方式三 3.4 多维数组 4. 遍历数组&取值 5. 数组拷贝和传参 数组相必大家都很熟悉,各大语言也都有数组的身影.Go 语言也提供了数组类型的数据结构. 1. Array(数组) 数组是同一种数据类型的固定长度的元素集合.在 Go 语言中,数组声明后长度就不能改变了,可以修改数组的元素,用法: // eg: 定义一个长度为 10 的 int 数组 var a [10]int 2. 声明数

  • Android开发基础实现音频文件的播放详解

    目录 前言 实现方法 最终效果 总结 前言 上一篇(安卓开发基础——实现最简单的视频播放我们简单的实现了一个播放视频的功能,这一节我们来实现App对音频文件的播放功能,本文主要是依靠MediaPlayer类去实现Android播放音乐的. 实现方法 和上一篇的播放功能实现类似,我们首先需要一个文件夹去放我们的音频文件,我们在main文件夹下新建一个assets文件夹放入我们的音频文件 然后我们在布局中添加一张图片,下面加上三个处理播放控制的按钮,播放,暂停(暂停播放),停止(正在播放就停止播放,

  • Python基础学习之函数方法实例详解

    本文实例讲述了Python基础学习之函数方法.分享给大家供大家参考,具体如下: 前言 与其他编程语言一样,函数(或者方法)是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. python的函数具有非常高的灵活性,可以在单个函数里面封装和定义另一个函数,使编程逻辑更具模块化. 一.Python的函数方法定义 函数方法定义的简单规则: 1. 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号(). 2. 任何传入参数和自变量必须放在圆括号中间.圆括号之间可以用于定义参数. 3.

  • Java基础学习之反射机制原理详解

    目录 一.什么是反射 二.反射的原理 三.反射的优缺点 四.反射的用途 五.反射机制常用的类 六.反射的基本使用 一.什么是反射 (1)Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息,从而操作类或对象的属性和方法.本质是JVM得到class对象之后,再通过class对象进行反编译,从而获取对象的各种信息. (2)Java属于先编译再运行的语言,程序中对象的类型在编译期就确定下来了,而当程序在运行时可能需要动态加载某些类,这些类因为之前用不到,所以没有被加载到JVM.通过反射,可

  • Git基础学习之分支基本操作详解

    目录 1.创建分支 (1)创建分支 (2)图示理解 2.查看分支列表 3.分支切换 4.查看所有分支的最后一个提交 5.删除分支 1.创建分支 (1)创建分支 Git 是怎么创建新分支的呢? 很简单,就是要创建一个可以移动的新的指针. 比如,创建一个testing分支, 你需要使用命令:git branch testing. 示例: # 1.查看本地版本库历史提交 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ gi

  • Git基础学习之分支操作的示例详解

    目录 1.新建一个分支并且使分支指向指定的提交对象 2.思考 3.项目分叉历史的形成 4.分支的总结 1.新建一个分支并且使分支指向指定的提交对象 使用命令:git branch branchname commitHash. 我们现在本地库中只有一个 master 分支,并且在 master 分支有三个提交历史. 需求:创建一个 testing 分支,并且testing 分支指向 master 分支第二个版本. # 1.查看提交历史记录 L@DESKTOP-T2AI2SU MINGW64 /j/

随机推荐