首页 > 其他分享 >『现学现忘』Git基础 — 35、Git中删除文件

『现学现忘』Git基础 — 35、Git中删除文件

时间:2022-10-18 16:14:39浏览次数:49  
标签:文件 git 现忘 html 35 Git master 暂存区 delete

目录

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,现忘,html,35,Git,master,暂存区,delete
From: https://www.cnblogs.com/liuyuelinfighting/p/16802897.html

相关文章

  • jenkins拉取git上SpringBoot项目进行构建、编译、打包、部署
    安装Jenkins、Git、Maven和JDKLinux服务器部署Jenkins自动化部署工具Linux服务器Git安装Linux服务器Maven安装参考Linux服务器JDK安装参考安装完这几个插件后,配置g......
  • git问题汇总
    如果出现每次提交/拉取都要再次输入密码解决方案请执行: gitconfig--globalcredential.helperstore再次输入密码之后就不会每次都要输入账号/密码问题git执行 git......
  • Git安装配置
    安装官网下载安装:Git官网下载慢?淘宝镜像地址:npmmirror.com下滑,选择最新版,后选择自己电脑需要的对应版本选择安装位置后无脑下一步安装卸载?清理环境变量,用系统自带......
  • NC14359 Fibonacci数列
    链接:https://ac.nowcoder.com/acm/problem/14359来源:牛客网题目描述Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。当n比较大时,Fn也非常大,现在我们想知道,Fn除以1......
  • Git忽略提交规则 - .gitignore配置运维总结
    在使用Git的过程中,我们喜欢有的文件比如日志,临时文件,编译的中间文件等不要提交到代码仓库,这时就要设置相应的忽略规则,来忽略这些文件的提交。简单来说一个场景:在你使用git......
  • NC14356 s01串
    链接:https://ac.nowcoder.com/acm/problem/14356来源:牛客网题目描述s01串初始为"0"按以下方式变换0变1,1变01输入描述:1个整数(0~19)输出描述:n次变换后s01串示例......
  • FZU 2105 Digits Count
     Problem2105DigitsCountAccept:444    Submit:2139TimeLimit:10000mSec    MemoryLimit:262144KB ProblemDescriptionGivenNintegersA={A[0],A......
  • Windows 和 Mac 系统下安装git 并上传,修改项目
    首先在MAC上怎么操作。在gitHub创立一个账户,在创立一个项目,这就不用我说了对吧。创建完之后是这样的: 接下来,我们打开https://brew.sh这是下载homebrew的网站,homebrew是干......
  • Linux下安装git工具及访问github问题的解决
    什么是git参考下这里:​​https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-Git-%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F​​站长写的很详细。如何安装安装[root@OpenKM~]......
  • Git学习(八)命令总结
    1、分支、pullrequest等日常写作命令2、常用的更新命令这是一个人在GitHub玩儿的时候用的最多的,就是不断push,最多在GitHub上改了的话先pull一下再push。//【快速命令】......