问题描述
1)在本地修改好的代码,commit到本地仓库,突然发觉有问题不想push推到远程仓库了,但它一直在push的列表中存在,那该怎么去掉push列表中的内容呢?
2)合并别的分支到当前分支(使用Merge into current操作),并提交到远程仓库,突然发现合并了预期外多余的代码,导致服务异常,那该怎么回滚到合并之前的状态呢?
解决方法
方法1:Reset current branch to here
Reset current branch to here是Git命令中的一种回滚操作,主要用于将当前分支回退到指定的提交状态。这个操作在开发过程中遇到错误提交或合并问题时,可以快速恢复到之前的稳定状态。
1) 在IDEA的“Git”工具窗口中,选择log页面,选择需进行回滚操作的分支,找到提交历史记录中的目标提交记录(该记录之后的所有提交记录将会被回退),鼠标右键,在弹窗中点击【Reset current branch to here】。
2)在Git Reset弹窗中选择合适的回退类型,点击【Reset】按钮执行回滚操作。
回退类型说明:
- Soft(软重置):只对本地仓库有影响,回退本地仓库文件的版本,被回退的文件全部变成未提交状态。可以简单理解被回退的代码由commit变为no commit状态。
- Mixed(混合重置):与Soft操作基本一样。区别在于新增的文件不是未提交,而是直接变成非git文件,该新文件不会被删除;而非新文件则是变为未提交状态。
- Hard(硬重置):远程仓库和本地仓库会删除选中提交记录之后的所有记录,所有文件变为当前选中的版本;未提交的文件全部被清空;而非git文件不受影响。
- Keep(部分保持重置):回滚到指定版本,但是保留指定版本之后的更改,即未提交的文件不会受到影响,如果回退版本的文件中有未提交的文件将进行版本冲突处理。
注意:硬重置是不可逆的,它会改变提交历史记录。在进行重置之前,建议备份您的代码或确保您有可靠的版本控制系统可以回溯。
方法2:Reset HEAD
Reset HEAD 是Git命令中的一种回滚操作,Copy Reversion Number + Reset HEAD,主要用于回退到指定的版本。
1)复制需要回滚的修订版本号RevisionNumber(注意主要针对该版本之后的提交记录进行回退操作)
2)选择【Reset HEAD...】,选择回退类型(这里只有Soft、Mixed、Hard选项),输入修订版本号,点击【Reset】执行回滚操作。
方法3:Revert Commit
Revert Commit 用于撤销某次提交,并生成新的Commit 记录。
1)选择需要撤销的某次提交记录,鼠标右键,选择【Revert Commit】,系统则生成新的提交记录
2)commit新的提交记录
3)然后再push即可撤销该次提交