总有一天你会遇到下面的问题.
(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 是两个常用的 Git 命令,用于撤销或回退版本,但它们的用法和实现有所不同。本文将详细介绍 Git Reset 和 Git Revert 的理解、区别和使用场景。 一、Git Reset Git Reset 用于回退版本,...
在Git版本控制中,有时我们需要将代码回退到某个历史版本,特别是在IDEA(IntelliJ IDEA)这样的集成开发环境中,这一操作变得尤为重要。本文详细介绍了两种在IDEA中回退Git分支到指定历史版本的方法。 1. **Revert...
在Git版本控制系统中,`git reset` 和 `git revert` 是两个非常重要的命令,它们用于撤销或回滚代码更改。这两个命令在处理错误的合并、回退到特定版本或者修复历史记录时尤其有用。让我们详细了解一下这两个命令...
例如,通过 `git log` 查看提交历史,找到想要回退到的版本号(通常是一个SHA-1哈希值),然后运行 `git reset --hard <版本号>`。这一步骤会立刻丢弃所有在此版本之后的提交。 - **注意**:执行 `git reset --hard...
这个命令对于修复错误的提交或者回退到某个稳定状态非常有用。在标题和描述中提到的场景,“buildtest失败”意味着在进行构建测试后,发现某个提交导致了测试未能通过。在这种情况下,`git-revert`可以用来找到导致...
3. 回溯和修复:`git log`查看提交历史,`git reset`回退到指定版本,`git revert`创建一个新的反向提交来撤销变更。 4. 协作:`git remote add`添加远程仓库,`git fetch`获取远程仓库更新,`git pull request`...
5. 版本回溯:如果发现某个版本有误,可以轻松回退到之前的版本,使用`git reset --hard`或`git checkout`命令可以实现。 6. 撤销操作:Git的`git revert`和`git reset`命令可以帮助用户撤销不想要的更改,无论是...
9. **撤销操作**:`git reset`和`git revert`可用于撤销提交或回退到某个状态。 10. **Stash**:`git stash`用于临时保存未提交的更改,以便切换到其他分支或恢复工作环境。 通过学习这个文档,你可以掌握Git的基本...
##### 回退某个文件的版本到上一个版本 仅将某个文件的状态回退到上一个提交。 **命令示例:** ``` git reset HEAD^ file_name ``` ##### 将本地的状态回退到和远程的一样 将本地仓库的状态重置为与远程仓库一致。...
- **回退**:`git revert`创建一个新的提交来反向应用之前的修改。 9. **Git工作流** - **Git Flow**:一种常见的Git工作流程,包括主分支、开发分支、特性分支、发布分支和修复分支。 10. **图形化工具** - **...
5. 在左侧的历史版本列表中找到需要回退到的版本,并通过右键点击选择“Revert”,这时会弹出一个小对话框,确认是否进行回滚操作。 6. 如果确认无误后,点击“Revert”按钮,PyCharm将自动把代码恢复到所选的历史...
每个提交都代表了项目的一个特定状态,你可以随时回退到任何一个历史版本。 Gitee是由开源中国开发的基于Git的代码托管平台,类似于GitHub,但在中国境内有着更快的速度和免费的私密项目支持。在Gitee上,用户可以...
- `git reset --hard`:回滚到最近一次提交,不保留任何变更。 - `git revert branch`:创建一个新的提交来撤销之前的提交。 - `git commit -a --amend`:替换最近一次提交的信息或内容。 - `git checkout id ...
11. **重置与回退**:`git reset` 和 `git revert` 命令用于撤销提交,回退到特定版本。 12. **钩子(hooks)**:自定义脚本,可以在特定操作前后自动执行,如代码质量检查或自动化部署。 总之,Git是现代软件开发不...
- `git reset`: 回退到某个状态。 - `git revert`: 撤销提交。 - **相关更改** - `git diff`: 查看更改差异。 - `git status`: 显示工作区状态。 - **版本控制原则** - 经常提交,确保每次提交都是完整的。 - ...
使用`git reset`和`git revert`命令可以回退到之前的提交状态。 #### 7. 解决合并冲突 - 当两个分支对同一个文件进行了不同的修改时,合并时可能会产生冲突。 - **手动解决冲突**:冲突通常需要手动解决,通过编辑...
#### 七、撤销与回退 **7.1 回滚到指定提交** - **命令**: `git reset --hard <commit-id>` - **用途**: 将 HEAD 指针重置到指定提交,并丢弃之后的所有更改。 - **示例**: 如果提交 ID 为 `123456`,则命令为 `...