git push 错误,回滚 push操作
个人微信公众号:程序猿的月光宝盒
0.记一次使用git push后,覆盖了同事代码的糗事
前言:
都在WebStorm中操作,Idea或者PyCharm同理
为了高度还原尴尬现场,这里在原有项目上新建分支,然后都在分支上操作,一方面怕自己搞炸了,一方面真实环境就是如此
1.还原案发现场的准备工作
1.1 新建分支
注意:
这里创建的分支仅仅在本地仓库
1.2. 分支提交到远程Git仓库
远程查看确认,确实有,说明分支已经创建
2.糗事发生契机
这时候别人可能会和你改同一文件
2.1 假设文件是这个html文件,然后你上传到远程分支
注意这时候都是在刚创建的那个分支操作
可以看到远程分支已经有了
2.2 这时我用另一电脑修改这个文件,并提交到远程,故意模仿他人操作,如图,在远程分支上Linux已经更新过
2.3 本地文件也做不一样的修改,假设自己再不知情的情况下做push操作必然会引起版本冲突
Remote changes need to be merged before pushing
推送前需要合并远程更改
这时你点了合并
上图,把你的和他的都合并提交,但是出现如下警告
Push has been cancelled, because there were conflicts during update. Check that conflicts were resolved correctly, and invoke push again.
Push已被取消,因为在更新期间有冲突。检查冲突是否已正确解决,并再次调用pull。
2.4 此时本地我已经做了版本合并,所以,再次pull
3. 正事来了.回滚吧
现在,你被告知Linux的为正确的修改,并且你上一步的提交影响到他了,要回滚push到Linux操作的阶段
3.1 将win给回滚调,留下Linux的代码
步骤
1. 在目标分支上copy revision number:
2. 右击项目依次选中:git->Repository->Reset HEAD
Reset Type选Hard,To Commit 写刚复制的版本号,
然后点击Reset按钮
这时候,代码已经回到了老的版本,这个时候不能提交代码,提交也是会冲突的。
4.提交
1.可以使用命令强制提交
git push -f
或者
2.使用Idea,(我使用的是这个方法)
在最新的commit上复制版本号
使用mixed类型,将上面复制的版本号粘贴进来:
git reset soft,hard,mixed之区别深解
又出来这个提示
3.再次pull
此时 代码是最新的正确的,
也就是Linux操作的正确修改
5:验证 上一步的强制push git push -f
1.说明
将程序从错误的复原,回滚到win操作
2.步骤
按照上面的步骤进行操作。
在后面提交的时候,直接强制提交,
则效果是:
可以看到一开始的
对应远程的文件
至此就恢复以及修改了,liunx端只要pull一下就行了,就是最新代码
git push 错误,回滚 push操作的更多相关文章
- Git误操作 git reset强制回滚 恢复commit方法
参考: 找回Git中丢失的Commit Git误操作 git reset强制回滚 恢复commit方法 使用Git时,常有误操作,在Commit之后又执行了git reset --hard HEAD强 ...
- Git回滚merge操作
执行完merge操作后,没有修改代码 1.命令 ⑴ git reflog 查看merge操作的上一个提交记录的版本号 ⑵ git reset –hard 版本号 这样可以回滚到merge之前的状态 2 ...
- git 版本库回滚(转载)
From:http://www.cnblogs.com/qualitysong/archive/2012/11/27/2791486.html From: http://www.tech126.com ...
- git 的版本回滚
当用git clone 复制远程代码库到本地时,使用 git branch 只能看到默认库(master),当远程库有多个分支时,可以使用 git branch -a 查看全部的分支, 然后git c ...
- git 远程分支回滚
git代码库回滚: 指的是将代码库某分支退回到以前的某个commit id [本地代码库回滚]: git reset --hard commit-id :回滚到commit-id,讲commit-id ...
- git本地代码库回滚(webstorm下)
git本地代码库回滚(webstorm下) 1. 场景 添加了一个文件[file-for-test.js]到git的控制下(并没有push到远程分支上) 进行了三次修改,并分别进行了三次commit( ...
- Git 使用revert回滚已提交的commit
在git使用中如果提交错误的代码至远程服务器,可以使用git revert 命令回滚单次commit并且不影响其他commit. 回滚最新一次的提交记录: git revert HEAD 回滚前一次的 ...
- GIT版本库回滚【图文版】
git 版本库回滚,在实际开发过程中总会遇得到 1. 先找出需要回滚的commitid git log -3 2. 重置本地版本库到指定commitid, 注意:本地改动将丢失 ...
- git如何正确回滚代码
git如何正确回滚代码 方法一,删除远程分支再提交 ①首先两步保证当前工作区是干净的,并且和远程分支代码一致 $ git co currentBranch $ git pull origin curr ...
随机推荐
- INNODB索引单列不能超767 复合不能超3072
innodb复合索引长度为什么是3072 我们知道InnoDB一个page的默认大小是16k.由于是Btree组织,要求叶子节点上一个page至少要包含两条记录(否则就退化链表了). ...
- Jquery学习2---倒计时
以下代码是mvc4.0代码,其功能是让页面上的数字3,变2,变1 然后跳转页面 @{ ViewBag.Title = "LoginOut"; } <html> < ...
- 王艳 201771010127《面向对象程序设计(java)》第十四周学习总结
实验十四 Swing图形界面组件 一理论部分 1.Layout Manager(布局管理器):布局管理器是一组类,实现 java.awt.LayoutManager 接口,决定容器中组件的位置和大小 ...
- hdu5984概率数学
转载 https://www.oyohyee.com/post/HDU/5984.html
- Gym101630A Archery Tournament
题目链接:https://vjudge.net/problem/Gym-101630A 题目大意: 有\(n\)个操作,每次输入\(t\) \(x\) \(y\)\((t=1,2; -10^9 \le ...
- JAVA-Servlet操纵方法
此篇自用查询 存储数据的区域对象域对象的通用的方法:ServletContext context=getServletContext();获取ServletContext对象setAtrribute( ...
- 什么,容器太多操作不过来?我选择Docker Compose梭哈
接上一篇:面试官:你说你精通 Docker,那你来详细说说 Dockerfile 吧 一.容器之间通信 1.单向通信 1.1.什么意思 mysql和tomcat是两个独立的容器,但是tomcat需要和 ...
- httpclient介绍与请求方式详解
httpClient工具介绍 HTTP协议可能是现在lntemet上使用得最多.最重要的协议了,越来越多的Java应用程序需要直接通过HTTP协议来访问网络资源.虽然在JDK的java.net包中已经 ...
- 需求:一个页面中需要用到多个字典数据。用于下拉选项,同时,需要将其保存为json格式。以便于key,value的相互转换。记录在实现过程中踩的坑
本文涉及到的知识: Promise,all()的使用 js处理机制 reduce的用法 map的用法 同步异步 需求: 一个页面中需要用到多个字典数据.用于下拉选项,同时,需要将其保存为json格式. ...
- Mysql面试的技术名词
面试的技术名词 面试一般会遇到一些名词,其实可能自己都知道其中的道理,但是因为没了解过,当时心里就一句WC,然后弱弱答一句:不好意思这个我只是听过,具体还没了解过: 回表 覆盖索引 最左前缀匹配 索引 ...