`

git reset revert 回退回滚取消提交返回上一版本

    博客分类:
  • git
 
阅读更多

总有一天你会遇到下面的问题.

(1)改完代码匆忙提交,上线发现有问题,怎么办? 赶紧回滚.

(2)改完代码测试也没有问题,但是上线发现你的修改影响了之前运行正常的代码报错,必须回滚.

 

这些开发中很常见的问题,所以git的取消提交,回退甚至返回上一版本都是特别重要的.

大致分为下面2种情况:

 

1.没有push

这种情况发生在你的本地代码仓库,可能你add ,commit 以后发现代码有点问题,准备取消提交,用到下面命令

reset
git reset [--soft | --mixed | --hard

 

上面常见三种类型

 

--mixed

会保留源码,只是将git commit和index 信息回退到了某个版本.

git reset 默认是 --mixed 模式 
git reset --mixed  等价于  git reset

 

--soft

保留源码,只回退到commit 信息到某个版本.不涉及index的回退,如果还需要提交,直接commit即可.

 

--hard

源码也会回退到某个版本,commit和index 都回回退到某个版本.(注意,这种方式是改变本地代码仓库源码)

当 然有人在push代码以后,也使用 reset --hard <commit...> 回退代码到某个版本之前,但是这样会有一个问题,你线上的代码没有变,线上commit,index都没有变,当你把本地代码修改完提交的时候你会发现权 是冲突.....

所以,这种情况你要使用下面的方式

 

 

2.已经push

对于已经把代码push到线上仓库,你回退本地代码其实也想同时回退线上代码,回滚到某个指定的版本,线上,线下代码保持一致.你要用到下面的命令

 

revert

git revert用于反转提交,执行evert命令时要求工作树必须是干净的.

git revert用一个新提交来消除一个历史提交所做的任何修改.

revert 之后你的本地代码会回滚到指定的历史版本,这时你再 git push 既可以把线上的代码更新.(这里不会像reset造成冲突的问题)

 

revert 使用,需要先找到你想回滚版本唯一的commit标识代码,可以用 git log 或者在adgit搭建的web环境历史提交记录里查看.

git revert c011eb3c20ba6fb38cc94fe5a8dda366a3990c61

通常,前几位即可

git revert c011eb3

 

git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit

看似达到的效果是一样的,其实完全不同.

第一:

上面我们说的如果你已经push到线上代码库, reset 删除指定commit以后,你git push可能导致一大堆冲突.但是revert 并不会.

第二:

如果在日后现有分支和历史分支需要合并的时候,reset 恢复部分的代码依然会出现在历史分支里.但是revert 方向提交的commit 并不会出现在历史分支里.

第三:

reset 是在正常的commit历史中,删除了指定的commit,这时 HEAD 是向后移动了,而 revert 是在正常的commit历史中再commit一次,只不过是反向提交,他的 HEAD 是一直向前的.

分享到:
评论

相关推荐

    前端大厂最新面试题-git reset_ git revert.docx

    Git Reset 和 Git Revert 是两个常用的 Git 命令,用于撤销或回退版本,但它们的用法和实现有所不同。本文将详细介绍 Git Reset 和 Git Revert 的理解、区别和使用场景。 一、Git Reset Git Reset 用于回退版本,...

    如何使用Git优雅的回滚实现

    例如,要回滚最近的一次提交,可以运行`git revert HEAD`。若要回滚连续的提交,如`commit1`到`commit2`,则执行`git revert commit1 commit2`。 **二、回滚合并提交** 在合并提交时,直接使用`git revert merge...

    详解IDEA git分支回退指定的历史版本

    在Git版本控制中,有时我们需要将代码回退到某个历史版本,特别是在IDEA(IntelliJ IDEA)这样的集成开发环境中,这一操作变得尤为重要。本文详细介绍了两种在IDEA中回退Git分支到指定历史版本的方法。 1. **Revert...

    git-reset-revert-tutorial

    在Git版本控制系统中,`git reset` 和 `git revert` 是两个非常重要的命令,它们用于撤销或回滚代码更改。这两个命令在处理错误的合并、回退到特定版本或者修复历史记录时尤其有用。让我们详细了解一下这两个命令...

    git使用补充1

    例如,通过 `git log` 查看提交历史,找到想要回退到的版本号(通常是一个SHA-1哈希值),然后运行 `git reset --hard &lt;版本号&gt;`。这一步骤会立刻丢弃所有在此版本之后的提交。 - **注意**:执行 `git reset --hard...

    git-revert:自动查找先前的提交并恢复为先前的提交,这用于buildtest失败

    这个命令对于修复错误的提交或者回退到某个稳定状态非常有用。在标题和描述中提到的场景,“buildtest失败”意味着在进行构建测试后,发现某个提交导致了测试未能通过。在这种情况下,`git-revert`可以用来找到导致...

    Git-2.30.0.2-64-bit.rar

    3. 回溯和修复:`git log`查看提交历史,`git reset`回退到指定版本,`git revert`创建一个新的反向提交来撤销变更。 4. 协作:`git remote add`添加远程仓库,`git fetch`获取远程仓库更新,`git pull request`...

    工作办公软件-版本控制git.zip

    5. 版本回溯:如果发现某个版本有误,可以轻松回退到之前的版本,使用`git reset --hard`或`git checkout`命令可以实现。 6. 撤销操作:Git的`git revert`和`git reset`命令可以帮助用户撤销不想要的更改,无论是...

    Git 管理工具和操作文档(msysgit for windows)

    9. **撤销操作**:`git reset`和`git revert`可用于撤销提交或回退到某个状态。 10. **Stash**:`git stash`用于临时保存未提交的更改,以便切换到其他分支或恢复工作环境。 通过学习这个文档,你可以掌握Git的基本...

    Git常用命令.md

    ##### 回退某个文件的版本到上一个版本 仅将某个文件的状态回退到上一个提交。 **命令示例:** ``` git reset HEAD^ file_name ``` ##### 将本地的状态回退到和远程的一样 将本地仓库的状态重置为与远程仓库一致。...

    Git笔记2共18页.pdf.zip

    - **回退**:`git revert`创建一个新的提交来反向应用之前的修改。 9. **Git工作流** - **Git Flow**:一种常见的Git工作流程,包括主分支、开发分支、特性分支、发布分支和修复分支。 10. **图形化工具** - **...

    git安装与使用介绍.docx

    每个提交都代表了项目的一个特定状态,你可以随时回退到任何一个历史版本。 Gitee是由开源中国开发的基于Git的代码托管平台,类似于GitHub,但在中国境内有着更快的速度和免费的私密项目支持。在Gitee上,用户可以...

    git-cheat-sheet.pdf

    - `git reset --hard`:回滚到最近一次提交,不保留任何变更。 - `git revert branch`:创建一个新的提交来撤销之前的提交。 - `git commit -a --amend`:替换最近一次提交的信息或内容。 - `git checkout id ...

    Git-2.38.1-64-bit.exe.7z

    11. **重置与回退**:`git reset` 和 `git revert` 命令用于撤销提交,回退到特定版本。 12. **钩子(hooks)**:自定义脚本,可以在特定操作前后自动执行,如代码质量检查或自动化部署。 总之,Git是现代软件开发不...

    关于Git安装,配置和使用教材,这一篇就够了

    - `git reset`: 回退到某个状态。 - `git revert`: 撤销提交。 - **相关更改** - `git diff`: 查看更改差异。 - `git status`: 显示工作区状态。 - **版本控制原则** - 经常提交,确保每次提交都是完整的。 - ...

    12.Git面试真题-43页.pdf

    使用`git reset`和`git revert`命令可以回退到之前的提交状态。 #### 7. 解决合并冲突 - 当两个分支对同一个文件进行了不同的修改时,合并时可能会产生冲突。 - **手动解决冲突**:冲突通常需要手动解决,通过编辑...

    Git常用命令整理归纳

    #### 七、撤销与回退 **7.1 回滚到指定提交** - **命令**: `git reset --hard &lt;commit-id&gt;` - **用途**: 将 HEAD 指针重置到指定提交,并丢弃之后的所有更改。 - **示例**: 如果提交 ID 为 `123456`,则命令为 `...

Global site tag (gtag.js) - Google Analytics