赞
踩
在新公司工作了一段时间的波仔,完成了分配给自己的任务,公司采用的是多分支模式开发,完成功能的波仔将自己的代码提交到特性分分feature_task_bobo并merge合并到了develop分支, 然后将合并结果push到了远程的develop分支, 测试部门拉取develop分支代码进行测试, 发现波仔的需求实现有偏差需要大改,且波仔的部分配置信息影响了其它功能的正常运行,项目上线在即 项目负责人决定先将波仔的合并代码取消,待需求修改完毕 bug解决掉后,在进行合并。
那么问题来了,代码目前已经完成本地merge合并 并且将merge推送到了远程仓库, 如何同时撤销本地merge 和 远程的merge操作呢?
问题演示
通过git log查看日志
当前情况如下图:
执行后会弹出编辑页面,直接 :wq保存即可,
命令的作用, 撤销合并的操作, 并创建一个新的commit提交记录。
执行完上面的操作,可以看到3毛的配置回来了,而波仔的代码被回退。
远程分支,也仅有3毛分支的代码,这样就完成了本地+远程合并分支代码的撤销操作,波仔可以继续修改自己分支的bug问题,修改完毕后,将波仔的代码重新合并到develop分支。
这样问题就全部解决啦~
执行git log查看状态
注意:
如果撤销波仔合并操作后, 再次合并波仔代码时, 发现之前参与合并过的代码无法再次合并到develop分支时,可以再一次的在develop分支执行git revert撤销合并的commit版本号,将之前撤销的波仔代码找回来即可。
git merge --abort 取消代码合并
git reset --hard HEAD^回退到上一个版本
后面的选项有四种:
–mixed 为默认,可以不用带该参数,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变。
–hard 参数撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交:
–soft 仅仅修改分支中的HEAD指针的位置,不会改变工作区与暂存区中的文件的版本。
git revert -m 1 HEAD 回到上一个commit的状态 (或者在git log 中找到对应的合并版本号) 即可撤回合并
git push origin master 撤回合并作为一个新的commit 推送到远程仓库
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。