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

大致介绍

经过前面的学习,已经建立了版本库,并上传了文件,这次来学习对这些文件进行基本的操作,即:

    ◆ 撤销操作

    ◆ 删除文件

    ◆ 恢复文件

我在此之前,已经将三个文件提交到了版本库

撤销操作

撤销操作的语法:

git checkout -- 文件名

撤销操作一般有两种情况:

  ◆ 文件修改后还没有提交到暂存区,进行撤销操作之后,文件恢复到和版本库中一模一样

  ◆文件修改后提交到了暂存区,进行撤销之后,文件恢复到在提交到暂存区之前的状态

现在index.htm中的内容是:

index.html

我们修改他的内容为:

<!DOCTYPE html>
 <html lang="en">
 <head>
 <meta charset="UTF-8">
 <title>Document</title>
 </head>
 <body>
 </body>
 </html>

1、文件未提交到暂存区

用 git status 命令查看文件状态

可以看到 index.html 修改了,但是还没有提交到暂存库,我们对这个文件进行撤销操作

然后再打开 index.html 文件,就可以发现,它就恢复到了和版本库中一模一样的状态

2、文件提交到了暂存区,但未提交到版本库

用 git status 命令查看:

如果这个文件写错了,想要修改,但是它已经提交到了暂存区。所以先需要将它撤销到工作区

git reset HEAD 文件名

写入命令并查看文件状态

可以看到,文件已经撤销到了工作区,但是现在文件的内容还没有变化,如果想要恢复到修改之前的状态就使用

git checkout -- 文件名

此时,文件就和版本库中的文件一模一样了

删除文件

新写一个文件,并提交到暂存区

1、先删除工作区中的文件,在删除暂存区的文件

  要先删除工作区中的文件,有两种方式:

   ◆ 只在文件夹中删除

   ◆用命令行

rm 文件名

删除工作区的文件后,查看文件状态:

可以看到,工作区中的 game.js 删除了,但是暂存区中的 game.js 还未删除

删除暂存区中的文件:

git rm 文件名

如图:

这样就将两个去的文件都删除了

2、同时删除工作区和暂存区中的文件

git rm -f 文件名

如图:

3、删除暂存区的文件,不删除工作区的文件

git rm --cached 文件名

如图:

恢复文件

如果我们想要恢复某个文件或者整个项目到之前的某个版本,Git提供了方便的操作

可以使用 git log 查看版本库的信息

如图:

如果想要将某个文件恢复到某个版本时的状态,可以使用以下的命令:

git checkout id 文件名

其中的id是图中框出来的,例如要将 index.html 文件恢复到 add three files 版本时的状态:

id可以不用全部复制过来,复制一部分就可以了

如果要将所有的文件都恢复到某个版本,可以使用下面的命令

git reset --hard id

如图:

除了用id恢复到某个版本库时的状态,还有别的写法:

 //恢复到上一个版本
 git reset --hard HEAD^
 // 恢复到前两个版本
 git reset --hard HEAD~2

另外,可以用 git reflog 查看恢复的记录

参考资料: 

CODE帮助文档-Progit中文版

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持我们!

(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 branch命令; git branch 从结果可以看出, 现在只有一个分支master; 二.创建分支 创建分支 : git branch 分之名称, 就可以创建一个分支, 创建完分支以后可以查看分支, 当前使用的分支会显示成为绿色, 前面带有 "*" , 如果不是当前使用的分支, 显示的是白色, 并且没有 "*" 前缀; git branch branch1 三.切换分支 切换分支 : git checkout 分支名

  • Ruby实现的删除已经合并的git分支脚本分享

    使用Git管理代码工程,着实方便了很多,但是当做完feature分支或者完成hotfix之后,总是忘记删除这些无用的分支,一个一个地删除着实麻烦,重复手工劳动不符合程序员的风格,于是写了一个简单的脚本.一键删除那些不需要的分支,让多余的干扰信息离开视线. 删除哪些分支? 删除的为Merge(合并)操作的源分支.如果工程正在处于分支A(HEAD为A分支),分支B已经合并到了分支A,即A分支包含了B分支的内容,则会删除B分支. 代码 复制代码 代码如下: #!/usr/bin/env ruby #

  • Git 详细介绍查看、删除、重命名远程分支和tag

    Git 详细介绍查看.删除.重命名远程分支和tag 1. 查看远程 分支加上-a参数可以查看远程分支,远程分支会用红色表示出来: xiaosi@Qunar:~/code/qtown-score$ git branch -a FRESH-1606_qscore-20160503 * dev master remotes/origin/20151225-qtown-score-FRESH-1236 remotes/origin/2016-2qtscore remotes/origin/FRESH-1

  • git修改和删除功能_动力节点Java学院整理

    为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件. 你会问,什么是修改?比如你新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改,甚至创建一个新文件,也算一个修改. 为什么说Git管理的是修改,而不是文件呢?我们还是做实验.第一步,对readme.txt做一个修改,比如加一行内容: $ cat readme.txt Git is a distributed version control syste

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

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

  • 如何彻底删除SVN中的文件和文件夹(附恢复方法)

    这里假设SVN项目的目录为 /data/svn/project,我们想排除trunk/test.exe文件和trunk/notallowed/目录,操作步骤如下及执行的svn命令(在svn安装目录的bin目录下)如下: # 首先将svn库整个导出  svnadmin dump /data/svn/project > project_original.dump  # 然后将project_original.dump文件里面不需要的文件进行排除并生成一个新的dump文件  type project_

  • python 文件操作删除某行的实例

    使用continue跳过本次写循环就可以了 #文本内容 Yesterday when I was young 昨日当我年少轻狂 The tasting of life was sweet 生命的滋味是甜的 As rain upon my tongue tasting I lived by night and shunned the naked light of day tasting123 And only now I see how the time ran away tasting tast

  • springboot操作阿里云OSS实现文件上传,下载,删除功能

    参考资料:Java操作阿里云OSS操作官方文档 学会看文档,并实际运用也是一种习惯和技能 下面就来简单入门一下,用当下比较热门的Springboot 去操作阿里云OSS文件存储. 1.需求 (没踩过下面的坑的小伙伴可以直接跳过这一章节) 问题简述 首先,我在之前自己做一些开源小项目案例中遇到一些文件上传下载的问题,比如在本机文件上传和下载都可以正常使用,通过将文件上传到Springboot项目的根目录下,按日期分文件夹,文件访问也很方便,可以直接返回文件相对路径地址,并直接可以访问. 问题 然而

  • 从git仓库中删除.idea文件夹的小妙招

    如果不配置.gitignore的文件,带push代码的时候就会把一写不必要的文件push到远程仓库,如.idea文件.如果不小心出现此文件在远程仓库可以通过一下步骤delete此文件: 1.配置.gitignore文件(新建/编辑) echo '.idea' >> .gitignore 2.将.gitignore文件上传到远程仓库 git pull git add .gitignore git commit -m 'edit .gitignore' git push origin master

  • java io文件操作删除文件或文件夹的7种方法

    目录 一.删除文件或文件夹的四种基础方法 二.如何删除整个目录或者目录中的部分文件 前提准备 2.1. walkFileTree与FileVisitor 2.2.Files.walk 2.3.传统IO-递归遍历删除文件夹 本文是Java IO总结系列篇的第4篇,前篇的访问地址如下: 总结java中创建并写文件的5种方式-JAVA IO基础总结第一篇 总结java从文件中读取数据的6种方法-JAVA IO基础总结第二篇 总结java创建文件夹的4种方法及其优缺点-JAVA IO基础总结第三篇 为了

  • ASP FSO文件操作函数代码(复制文件、重命名文件、删除文件、替换字符串)

    FSO文件(File)对象属性 DateCreated 返回该文件夹的创建日期和时间 DateLastAccessed 返回最后一次访问该文件的日期和时间 DateLastModified 返回最后一次修改该文件的日期和时间 Drive 返回该文件所在的驱动器的Drive对象 Name 设定或返回文件的名字 ParentFolder 返回该文件的父文件夹的Folder对象 Path 返回文件的绝对路径,可使用长文件名 ShortName 返回DOS风格的8.3形式的文件名 ShortPath 返

  • java io文件操作删除文件或文件夹的7种方法

    目录 本文是Java IO总结系列篇的第4篇,前篇的访问地址如下: 总结java中创建并写文件的5种方式-JAVA IO基础总结第一篇总结java从文件中读取数据的6种方法-JAVA IO基础总结第二篇总结java创建文件夹的4种方法及其优缺点-JAVA IO基础总结第三篇 如果您阅读完成,觉得此文对您有帮助,请给我点个赞,您的支持是我不竭的创作动力. 为了方便大家理解,我特意制作了本文对应的视频:总结删除文件或者文件夹的7种方法 一.删除文件或文件夹的四种基础方法 下面的四个方法都可以删除文件

  • Git里多种撤销操作的最佳方法

    前言 相信大家都知道任何版本控制系统的一个最有的用特性就是"撤销 (undo)"你的错误操作的能力.在 Git 里,"撤销" 蕴含了不少略有差别的功能.当你进行一次新的提交的时候,Git 会保存你代码库在那个特定时间点的快照:之后,你可以利用 Git 返回到你的项目的一个早期版本. 撤销一个"已公开"的改变 场景: 你已经执行了 git push, 把你的修改发送到了 GitHub,现在你意识到这些 commit 的其中一个是有问题的,你需要撤销

  • Git撤销&回滚操作(git reset 和 get revert)

    git的工作流 工作区:即自己当前分支所修改的代码,git add xx 之前的!不包括 git add xx 和 git commit xxx 之后的. 暂存区:已经 git add xxx 进去,且未 git commit xxx 的. 本地分支:已经git commit -m xxx 提交到本地分支的. 代码回滚 在上传代码到远程仓库的时候,不免会出现问题,任何过程都有可能要回滚代码: 1.在工作区的代码 git checkout -- a.txt # 丢弃某个文件,或者 git chec

随机推荐