『现学现忘』Git基础 — 35、Git中删除文件 - 繁华似锦Fighting
source link: https://www.cnblogs.com/liuyuelinfighting/p/16802897.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
1、删除文件说明
在Git工作目录中要删除某个文件,首先要清楚该文件所处的状态。
若要是该文件未被Git管理,在工作区直接进行删除即可。(不演示)
但是,若该文件已经经过多次git add
与git 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.html
和readme.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
:删除工作区和暂存区的文件。
__EOF__
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK