当前位置:   article > 正文

【Git的基本操作】版本回退 | 撤销修改的三种情况 | 删除文件_git 如何将版本回退,并删除日志

git 如何将版本回退,并删除日志

目录

5.版本回退

5.1选项hard&后悔药

5.2后悔药&commit id

5.3版本回退的原理

6.撤销修改

6.1情况一

6.2情况二

6.3情况三

​7.删除文件


Git重要能力之一马,版本回退功能。Git是版本控制系统,能够管理文件历史版本。本篇以ReadMe文件为例。

  • 版本回退 是回到某一次提交或者回退操作的时候版本 (用提交记录的commit id即可)
  • 版本撤销 是直接定位某个文件需要撤销的内容。

5.版本回退

版本回退命令:git reset

版本回退命令本质是:将版本库里面的内容回退的。

git reset也存在多个选项。

git reset 命令语法格式为:

git reset [--soft | --mixed | --hard] [HEAD]  你想要回退到的版本的commit id(提交记录)

  • Git reset 只是回退版本库(本地仓库)中的内容。关于工作区和暂存区的内容回退,需要git reset --选项 后面的选项来决定。
  • 版本回退是回退一次 add或者commit 操作,不是一个仅仅某个文件的版本。(这次提交的所有文件的版本都不算)
  • --soft:只回退版本库中的内容
  • --mixed:会回退版本库和暂存区的内容(默认选项)

  • --hard:会回退版本库和暂存区和工作区的内容。(注意❗hard要慎用,一旦使用hard选项,版本库/暂存区/工作区所有的内容都回退到上一个版本。如果文件少,代码少,可以用commit id找回来;如果文件过大,操作频繁,很可能导致丢失一些新开放的代码

  • git log --pretty=oneline 或者 git log 用来查看 每次提交的记录

  • git reset 除了以上的版本回退的操作,还可以将文件回退到当前版本HEAD

  • HEAD当前版本意思就是工作区和暂存区的内容版本和版本库中一致。(看选项)


背景☞回退操作

ReadMe文件原本只有hello linux

ReadMe文件修改之后增加了一行aaaaaaaaaa

  1. git reset [--soft | --mixed | --hard] [HEAD]
  2. git reset --soft //仅工作区的内容
  3. git reset --mixed //是工作区和暂存区的内容——默认选项
  4. git reset --hard //是工作区和暂存区和版本库的内容——慎用
  5. git reset HRAD //(HEAD就是表示回退到当前版本,不需要选项,因为选项是默认选项)
  6. //就是工作区和暂存区的内容一起回到版本库内容一致
  7. git reset HRAD^ //回退到上一个版本
  8. git reset HRAD^^ //回退到上上个版本
  9. //后面都要接commit id或者文件名

5.1选项hard&后悔药

git reset --hard 7f0ea7a49fc354e7f07696609b0c9e8ec261d0b8

用户此刻后悔了,能不能撤销刚刚的操作。

当然可以,刚刚已经答应了最新的commit id,我们知道我们原来版本(回退之前)的commit id,所以还可以回退到原来的文件版本。因为我们可以找到commit id,且并没有将modify的ReadMe的commit id清除掉.

5.2后悔药&commit id

 git reflog :用来记录每一次的提交命令

每一次提交或者是回退操作都有各自操作对应commit id

我们照样也可以使用一部分的commit id来回退

以上的前提是我们能找到commit id,在开发的过程中,我们会进行很多次的git操作,会把commit id冲刷掉,找不到。

5.3版本回退的原理

版本回退的速度是非常快的,版本回退的速度为什么快呢❓

只需要修改的master的指向(指针)

6.撤销修改

git checkout  -- 需要撤销的文件名

  • 将工作区的文件回到醉经一次的add或者commit时的一个状态
  • 注意:必须加上-- 这两根横线,不然就是另外一层含义

背景☞撤销操作

版本12:hello linux aaaaaaaaaaaa

版本3:xxxxx code(需要撤销这行代码)

6.1情况一

情况一:只在工作区的ReadMe文件修改了内容

解决办法:

  • 手动撤销——不推荐,容易出错    
  • git checkout --[filename] --推荐

6.2情况二

情况二:在工作区的ReadMe文件修改了内容并且add到了暂存区。

解决办法:

  • 回退命令 git reset HEAD (默认选项--mixed)暂存区回退到当前版本,回到撤销情况一   
  • 使用git checkout 撤销命令。或者是直接git reset --hard HEAD 一步到位

6.3情况三

情况三:在工作区的ReadMe文件修改了内容并且add到了暂存区和commit提交到了版本库中。

  • 前提时:commit 之后没有push
  • 撤销的目的是 不影响远程仓库的代码
  • 解释:我们使用操作只能截止到commit操作,而不能使用Push操作。有个这个大的前提,我们的撤销才算有效。含义:将来在公司运行一些代码,是运行的/跑的 远程仓库的代码。(所以我们主要是围绕远程仓库来玩)撤销主要就是撤销我们本地一些错误的,不好的代码。修改完才能推送到远程仓库。
  • 远程仓库:暂时不用理解。
  • 工作区——add——>暂存区——>commit——>版本库——>Push——>远程仓库
  • 因为上面两种撤销情况我们都不需要考虑,都没有commit到版本库中,不可能到远程仓库。这种情况,版本库中有了,我们不知道,远程仓库里是否被Push了。所以前提条件就是,远程仓库没有被Push,这个撤销操作才算有效。

解决办法:

  • 前提条件:commit 之后没有push    
  • 使用git reset --hard commit id
  • 一步一步回到撤销情况二 撤销情况一 再用git checkout

7.删除文件

删除一个已经更新到版本库中的文件(两种做法) 

  1. //做法1
  2. rm file
  3. git add file
  4. git commit -m "delete file"
  5. //做法2
  6. git rm file //把工作区和暂存区的文件一步到位删除
  7. git commit -m "delete file"

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/1007106
推荐阅读
相关标签
  

闽ICP备14008679号