作者:故事我忘了
个人微信公众号:程序猿的月光宝盒

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的为正确的修改,并且你上一步的提交影响到他了,要回滚pushLinux操作的阶段

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之区别深解

git reset soft,hard,mixed之区别深解

又出来这个提示

3.再次pull

​ 此时 代码是最新的正确的,

​ 也就是Linux操作的正确修改

5:验证 上一步的强制push git push -f

1.说明

  将程序从错误的复原,回滚到win操作

2.步骤

  按照上面的步骤进行操作。

  在后面提交的时候,直接强制提交,

则效果是:

可以看到一开始的

对应远程的文件

至此就恢复以及修改了,liunx端只要pull一下就行了,就是最新代码

git push 错误,回滚 push操作的更多相关文章

  1. Git误操作 git reset强制回滚 恢复commit方法

    参考: 找回Git中丢失的Commit Git误操作 git reset强制回滚 恢复commit方法 使用Git时,常有误操作,在Commit之后又执行了git reset --hard HEAD强 ...

  2. Git回滚merge操作

    执行完merge操作后,没有修改代码 1.命令 ⑴ git reflog 查看merge操作的上一个提交记录的版本号 ⑵ git reset –hard 版本号 这样可以回滚到merge之前的状态 2 ...

  3. git 版本库回滚(转载)

    From:http://www.cnblogs.com/qualitysong/archive/2012/11/27/2791486.html From: http://www.tech126.com ...

  4. git 的版本回滚

    当用git clone 复制远程代码库到本地时,使用 git branch 只能看到默认库(master),当远程库有多个分支时,可以使用 git branch -a 查看全部的分支, 然后git c ...

  5. git 远程分支回滚

    git代码库回滚: 指的是将代码库某分支退回到以前的某个commit id [本地代码库回滚]: git reset --hard commit-id :回滚到commit-id,讲commit-id ...

  6. git本地代码库回滚(webstorm下)

    git本地代码库回滚(webstorm下) 1. 场景 添加了一个文件[file-for-test.js]到git的控制下(并没有push到远程分支上) 进行了三次修改,并分别进行了三次commit( ...

  7. Git 使用revert回滚已提交的commit

    在git使用中如果提交错误的代码至远程服务器,可以使用git revert 命令回滚单次commit并且不影响其他commit. 回滚最新一次的提交记录: git revert HEAD 回滚前一次的 ...

  8. GIT版本库回滚【图文版】

    git 版本库回滚,在实际开发过程中总会遇得到   1. 先找出需要回滚的commitid     git log -3   2. 重置本地版本库到指定commitid, 注意:本地改动将丢失     ...

  9. git如何正确回滚代码

    git如何正确回滚代码 方法一,删除远程分支再提交 ①首先两步保证当前工作区是干净的,并且和远程分支代码一致 $ git co currentBranch $ git pull origin curr ...

随机推荐

  1. INNODB索引单列不能超767 复合不能超3072

    innodb复合索引长度为什么是3072  我们知道InnoDB一个page的默认大小是16k.由于是Btree组织,要求叶子节点上一个page至少要包含两条记录(否则就退化链表了).         ...

  2. Jquery学习2---倒计时

    以下代码是mvc4.0代码,其功能是让页面上的数字3,变2,变1 然后跳转页面 @{ ViewBag.Title = "LoginOut"; } <html> < ...

  3. 王艳 201771010127《面向对象程序设计(java)》第十四周学习总结

    实验十四  Swing图形界面组件 一理论部分 1.Layout Manager(布局管理器):布局管理器是一组类,实现 java.awt.LayoutManager 接口,决定容器中组件的位置和大小 ...

  4. hdu5984概率数学

    转载 https://www.oyohyee.com/post/HDU/5984.html

  5. Gym101630A Archery Tournament

    题目链接:https://vjudge.net/problem/Gym-101630A 题目大意: 有\(n\)个操作,每次输入\(t\) \(x\) \(y\)\((t=1,2; -10^9 \le ...

  6. JAVA-Servlet操纵方法

    此篇自用查询 存储数据的区域对象域对象的通用的方法:ServletContext context=getServletContext();获取ServletContext对象setAtrribute( ...

  7. 什么,容器太多操作不过来?我选择Docker Compose梭哈

    接上一篇:面试官:你说你精通 Docker,那你来详细说说 Dockerfile 吧 一.容器之间通信 1.单向通信 1.1.什么意思 mysql和tomcat是两个独立的容器,但是tomcat需要和 ...

  8. httpclient介绍与请求方式详解

    httpClient工具介绍 HTTP协议可能是现在lntemet上使用得最多.最重要的协议了,越来越多的Java应用程序需要直接通过HTTP协议来访问网络资源.虽然在JDK的java.net包中已经 ...

  9. 需求:一个页面中需要用到多个字典数据。用于下拉选项,同时,需要将其保存为json格式。以便于key,value的相互转换。记录在实现过程中踩的坑

    本文涉及到的知识: Promise,all()的使用 js处理机制 reduce的用法 map的用法 同步异步 需求: 一个页面中需要用到多个字典数据.用于下拉选项,同时,需要将其保存为json格式. ...

  10. Mysql面试的技术名词

    面试的技术名词 面试一般会遇到一些名词,其实可能自己都知道其中的道理,但是因为没了解过,当时心里就一句WC,然后弱弱答一句:不好意思这个我只是听过,具体还没了解过: 回表 覆盖索引 最左前缀匹配 索引 ...