git撤销合并

96 阅读1分钟

git撤销合并

今天在test测试分支上敲代码,提交了。当测试分支合并到master主分支上时,发现test测试分支的配置文件也合并过来了。正确的方法应该是在master分支上写代码,提交后推送至测试分支,记录一下回退过程。

方法一

首先切换到需要回退的分支

//HEAD为对应分支的名称
$ git checkout HEAD

查看commit_id

$ git log

查看对应的commit_id后按q退出

然后本地回退,这里我使用的是第三行命令

$ git reset --hard HEAD^ 回退到上个版本 
$ git reset --hard HEAD~n n代表会推到n次前的操作 
$ git reset --hard commit_id 进入指定commit的

本地回退之后需要强制推送至远程

//HEAD为对应分支的名称
$ git push origin HEAD --force

回退成功,此时问题已经解决,还有一种方法无需强推,但命令行比上述方法多,方法二的命令行我没敲过,只是记录一下

方法二

本地强制回退

$ git reset --hard commit_id

在此分支的基础上,重新创建一个分支,newmaster为新分支名称

$ git checkout -b newmaster

将新建的分支推送至远程仓库

$ git push origin newmaster:newmaster

备份完毕删除本地错误分支

//假定本地错误分支为master
$ git branch -d master
//推送至远程
$ git push --delete origin master

从newmaster上分支,重建master

$ git checkout -b master origin/newmaster
$ git push master:master