git如何撤销commit的方法(未push)

撤销commit一般用git reset ,语法如下:

git reset [ --mixed | --soft | --hard] [<commit ID>]

1.使用参数--mixed(默认参数),如git reset --mixed <commit ID>或git reset <commit ID>

撤销git commit,撤销git add,保留编辑器改动代码

2.使用参数--soft,如git reset --soft<commit ID>

撤销gitcommit,不撤销git add,保留编辑器改动代码

3.使用参数--hard,如git reset --hard <commit ID>——此方式非常暴力,全部撤销,慎用

撤销gitcommit,撤销git add,删除编辑器改动代码

开始撤销commit的示例:

输入git log,我们可以看到最近的3次提交,最近一次提交是test3,最早的一次是test1,其中一大串黄色的字母commit id(版本号)

如果嫌输出信息太多,可加上--pretty=oneline参数,即

git log --pretty=oneline

接下来,按下键盘上的字母q退出git日志,准备进行撤销commit

Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交commit id,上一个版本就是HEAD^(或者HEAD~1),上上一个版本就是HEAD^^(或者HEAD~2),同理往上N个版本写N个^不太现实,我们写成HEAD~100。

现在,我们要把当前版本test3上一个版本test2,就可以使用git reset命令:git reset --hard HEAD^,再查看日志,发现已经剩下2个commit版本了

git reset --hard HEAD^

最新的那个版本test3已经看不到了,此时你想起有一行代码写得很好,想回到test3版本看下,怎么做?

办法其实还是有的,只要上面的命令行窗口还没有被关掉,记录还是在,使用命令git reset --hard commit_id可以回退到指定的版本,比如当前例子,我们找到那个test3的commit id是e09af7ae711e2a79c15144c1e792fb2e27d201ff,然后输入下面指令就回来了

git reset --hard e09af7ae711e2a79c15144c1e792fb2e27d201ff

版本号可以不用写全,输入前4位或更多也是可以,Git会自动去找,不能只写前一两位,因为Git可能会找到多个版本号。比如,看完test3版本的代码后,现在想回退到最初test1版本,我们找到那个test1的commit id是ab7b0c2b6e10a20d524156a81f6d4bc15a4ea7f3,然后输入下面指令就回来了

git reset --hard ab7b

最后在Git中,总是有后悔药可以吃的,Git提供了一个命令git reflog用来记录你的每一次命令,通过它可以查到每个commit id,方便你前进或者回退到指定的版本

到此这篇关于git如何撤销commit的方法(未push)的文章就介绍到这了,更多相关git撤销commit内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • git修改已commit的注释信息实现

    有时候commit后发现注释不太合适需要修改,网上查找了一些方法,经测试后整理一下. 环境:windows 情况:commit后未push 修改前情况: 修改步骤 1.输入命令,进入vim界面 git commit --amend 2.进入编辑模式 按键i可进入编辑模式(与vim用法相同). 3.修改注释信息,然后退出编辑模式 按键ESC可退出编辑模式(与vim用法相同). 4.完成修改,查看结果 在非编辑模式下输入**:wq**(与vim用法相同)可保存退出. 到此这篇关于git修改已comm

  • 浅析git server“丢失”commit问题

    1 背景 gitlab某仓库有同事发现部分代码文件内容丢失,具体表现 A. dev分支commit信息是连续的,看不出明显的大时间范围批量丢失 B. 以SuncardCashier/control/CSymbolEdit.h为例,在1c88f613下只能看到2个历史相关提交 但是1天前提交的bfff1f51,也有此文件的修改提交,意味着bfff1f51这个提交"丢失"了 2 追查过程 2.1 gitlab server侧寻找线索 表面上像是gitlab server出现了某些问题导致&

  • Git回退代码到某次commit的实现方法

    前言 工作中,Git的使用越来越频繁..除了最常用的clone,add,commit,push,pull等命令:还有回退命令reset.这一篇博客就记录一下该回退命令的简单使用. 场景 因为公司开发过程中,处理订单,限时购买等业务时,都是用的阿里云的消息队列MQ实现的.或者是两个系统之间的交互,同步信息,如用户在支付系统A下了一个订单(支付成功),这个时候支付系统A除了处理订单,还有向库存系统B发送一个消息,告知库存系统B要减少下单商品的库存. 我本地跑项目的时候,如果不注释掉监听器,测试服上的

  • git如何撤销commit的方法(未push)

    撤销commit一般用git reset ,语法如下: git reset [ --mixed | --soft | --hard] [<commit ID>] 1.使用参数--mixed(默认参数),如git reset --mixed <commit ID>或git reset <commit ID> 撤销git commit,撤销git add,保留编辑器改动代码 2.使用参数--soft,如git reset --soft<commit ID> 撤销

  • Git的撤销、修改和回退命令

    一.撤销修改(git add/rm 之前) git checkout -- * //是撤销从上次提交之后所做的所有修改 git checkout -- filaname //是撤销从上次提交之后的单个文件的修改 二.git add/rm 之后,还未git commit 情况一: 从暂存区撤出 git reset HEAD <file> //reset 某个文件 git reset HEAD . //reset 所有 情况二: 如果是 git rm 的文件,需要执行下面的,把它撤回来,add 的

  • 详解Git 的 rebase 命令使用方法

    在基于 Git 的开发过程中,我们很容易遇到合并代码的情况,例如我们从 master 分支拉取了一个 feature 分支,当我们开发到一段时间之后,可能需要将 master 的代码合并到我们当前的 feature 分支之中. 这时,我们有两个选择,一个是使用git merge命令,一个是使用git rebase命令,这两个命令都是用来合并代码的,但却有一些差异.在本文中,我们主要讲述git rebase命令的使用方法,也会简单介绍这两个命令的差异. 如上图所示,我们从 master 分支拉取了

  • 将git项目导入GitHub的方法(附创建分支)

    前言:我们应该很多都会有自己的私有项目,大多情况都是存放在自己的硬盘中,今天我分享一下怎么讲自己的私有项目更新到GitHub上,这样再也不用担心项目丢失了. 一:下载git 下载链接git链接,根据自己情况选择,我是Windows上开发的所以选择的是win. 二:生成.ssh 下载git安装以后了我们右键单击桌面选择Git Bash Here就会出现了一个git的界面. 输入cd ~/.ssh 查看是否已经有ssh密匙,如果没有密匙则不会有这个文件夹,有则备份然后删除 生成密匙:ssh-keyg

  • 详解idea切换git账号的两个方法

    两个方法可能都行,可能都不行,可能行一个,每个人遇到的问题不一样,自行排查吧 方法一:win10/win7凭据管理器处修改! 1.win10点击Cortana小圆圈,输入凭据管理器,点击凭据管理器 win7:`计算机 > 控制面板 > 用户账户和家庭安全 > 凭据管理器 > 普通凭据` 2.在windows凭据的普通凭据下更改对应的凭据(git账号和密码) 方法二:idea中不记住密码 在idea的设置中,搜索password,在Passwords中,选择Do not save选项

  • IntelliJ IDEA使用git初始化仓库的使用方法

    使用方法 首先在Github或者Gitee上面新建一个仓库 复制仓库的链接 用idea在本地新建一个demo项目 点击菜单栏的VCS,按照下图进行选择,选择新建的项目文件夹 这时idea左上角会出现如下几个按钮,本地的代码仓库已经创建完成 点击下图的按钮或者按Ctrl+K,将项目提交到本地仓库 勾选所有的文件后,填写commit message,内容自己定义,点击commit 选择commit 选择VCS -> Git -> Push或者按Ctrl + Shift + K,将项目提交到刚才在码

  • Git ssh 配置及使用方法

    这篇教程是在电脑上已经安装好git的前提之上的,要进行以下配置,请先确保你的电脑已经安装好git.以下配置步骤是在git bash里面进行配置的,可以通过 右键> git bash here 打开 在管理Git项目上,很多时候都是直接使用https url克隆到本地,当然也有有些人使用SSH url克隆到本地. 这两种方式的主要区别在于:使用https url克隆对初学者来说会比较方便,复制https url然后到git Bash里面直接用clone命令克隆到本地就好了,但是每次fetch和pu

  • MySQL创建用户与授权及撤销用户权限方法

    MySQL中创建用户与授权的实现方法. 运行环境:widnows xp professional + MySQL5.0 一, 创建用户 命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 说明:username - 你将创建的用户名, host - 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost, 如果想让该用户可以从任意远程主机登陆,可以使用通配符%. password - 该用户的登陆密码,密码可以为空,

随机推荐