首页 > 其他分享 >Git 版本回退reset,revert

Git 版本回退reset,revert

时间:2023-02-10 13:45:20浏览次数:52  
标签:reset git -- revert Git 版本 回退 commit

一、git reset 的用法

简单的来说,git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。
git reset命令 又可以分为git reset --hard xxxgit reset --soft xxx以及git reset --mixed xxx
为了更好的说明,我们来看一些测试的例子:
原本abc.md中的内容是:iiiiiiiiii

img

现在我们更改它的内容为:hello world

img

执行代码git commit -am "change abc.md"
然后我们用git log查看所有的历史版本:

img

好了,我们准备把它还原到上一个版本。
执行命令git reset --hard HEAD^回退版本和命令cat abc.md输出内容。
*(HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭)*

img

显然,已经回到了上一个版本。再一次执行git log

img

发现最新的一个版本change abc.md已经不见了。
怎么复原最新的版本呢?我们可以使用命令git reflog,该命令用来记录你的每一次命令。

img

然后可以记录版本的commit id,回到最新的版本。
如:git reset --hard 3a169ff。此时我们再输出abc.md有:

img

然后我们再来看看git reset --soft xxx,该命令将最近一次提交节点的提交记录回退到暂存区。
举个例子:将abc.md中的数据改成Hello Github。然后commit

img

突然发现我们将git commit -am "change world to github"写成了git commit -am "cange world to github"。所以我们要将本次提交回退到暂存区,再重新把comment补全,进行一次提交。现在执行git reset --soft head^,就可以重新commit了。

img

此时的git log为:

img

我们顺利的更改了错误。
git reset --mixed xxx是将最近一次提交节点的提交记录回退到工作区,比如文件多提交了,或者有一个文件漏添加到暂存区而没有在此次提交时使用,这里不多举例子了。

二、git revert 的用法

git revert 的作用是通过创建一个新的版本,这个版本的内容与我们要回退到的目标版本一样,但是HEAD指针是指向这个新生成的版本,而不是目标版本。
如果我们想恢复之前的某一版本(该版本不是merge类型),但是又想保留该目标版本后面的版本,记录下这整个版本变动流程,就可以用这种方法。
我们使用git revert HEAD命令就可以创建一个新的版本,此版本与上一个版本相同。

img

此时cat abc.md就可以发现输出回到了hello world

img

以下是 git renert 的三种用法

  • git revert HEAD :撤销前一次 commit
  • git revert HEAD^ :撤销前前一次 commit
  • git revert commit + (commit id): 撤销指定的版本,撤销也会作为一次提交进行保存。

三、总结

  • git reset --soft HEAD^:将最近一次提交节点的提交记录回退到暂存区
  • git reset --mixed HEAD^:将最近一次提交节点的提交记录回退到工作区
  • git reset --hard HEAD^:将最近一次提交节点的提交记录全部清除
  • git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。

img
Git三大分区

转自:https://www.jianshu.com/p/09dbd8dc7345

标签:reset,git,--,revert,Git,版本,回退,commit
From: https://www.cnblogs.com/aleiyoy/p/17108592.html

相关文章

  • git中patch的用法
    Git的patch用法是指通过创建一个补丁文件来修改或提交Git仓库中的代码。一个patch文件是一种文本文件,它记录了将要在仓库中执行的代码更改。您可以创建补丁文件并将......
  • ssh建立github连接 基于ssh密钥
    1.建立公钥和私钥ps:公钥放在github上面的,私钥放在自己本地电脑;先生成密钥:打开gitbash输入命令:ssh-keygen-trsa-b4096-C"[email protected]"结果:Genera......
  • Git基本使用
    1.git介绍1.1.版本控制系统集中式版本控制系统集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新......
  • 网页能看github,但是ping不通
    github经常ping不通或者访问缓慢,参考特立独行MVP的帖子,问题得到了解决,记录一下,毕竟,这种问题每隔一段时间就会发生。方法是更改hosts文件#修改/etc/hostssudovim/etc......
  • 罗技Logitech M557蓝牙鼠标更换左键微动开关【已修复】
    故障:鼠标左键单击变双击维修:更换微动开关这里我选择的是欧姆龙微动【蓝】(店家号称寿命有5000W次)本来以为很简单的事情,结果反复折腾了一下午~(大无语事件)于是顺便做一下......
  • git 怎么使用一个命令把本地修改push到多个remote上?
    参考这个答案:https://stackoverflow.com/questions/5785549/able-to-push-to-all-git-remotes-with-the-one-command可以再看看这个评论 Supercooltrick!Theonlydis......
  • 新项目克隆代码出现fatal: Unencrypted HTTP is not supported for GitLab. Ensure th
    ###新项目克隆代码出现fatal:UnencryptedHTTPisnotsupportedforGitLab.EnsuretherepositoryremoteURLisusingHTTPS报错话不多说,直接上图到网上也查了......
  • git 版本回退
    Git 的版本回退操作 内容介绍:一、时光穿梭机-版本回退二、查看版本,确定需要回到的时刻点三、回退指令:  时光穿梭机-版本回退当把git从仓库的指令用熟之后......
  • Git远程仓库命令
    gitgit.acwing.com常用命令[email protected]:xxx/XXX.git(这段在推中获取):将本地仓库关联到远程仓库gitpush-uoriginmaster:将当前分支推......
  • git取消版本控制
    参考:https://blog.csdn.net/lzx5290/article/details/127665687?spm=1001.2014.3001.5506执行命令如下:MicrosoftWindows[版本10.0.19041.208](c)2020MicrosoftCo......