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

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. APIView中的dispatch

    (1)dispatch方法详解----封装原有的request对象 (原request中的方法和属性均可直接在封装后的request中调用,或者使用request._request也可,如:reque ...

  2. dockerfile定制docker的脚本文件

    Dockerfile文件详解 #指定操作系统 FROM scratch #制作base image 基础镜像,尽量使用官方的image作为base image FROM centos #使用base ...

  3. Java面试题小结(一)

    ---恢复内容开始--- 1.用Java解析xml有几种方式,实现场景.区别以及优缺点: 有四种 分别是JDOM.SEX.DOM.JDOM4J 实现场景: JDOM:实现功能简单的地方,例如:解析: ...

  4. 牛客网挑战赛19 B,C,F

    链接:https://www.nowcoder.com/acm/contest/131/B来源:牛客网 矩阵 M 包含 R 行 C 列,第 i 行第 j 列的值为 Mi,j. 请寻找一个子矩阵,使得这 ...

  5. 五、数据类型(1):整数&&带小数点的数

    1.整数 int printf("%d",...); scanf("%d",&...); 2.带小数点的数 double printf("%f ...

  6. Fundamental ES6 Part-I

    Exercise-01 with Solution Write a JavaScript program to compare two objects to determine if the firs ...

  7. tp5增删改查基本操作

    //插入数据 $res = Db::execute('insert into phptab(info) values("小张")'); dump($res); //修改数据 $re ...

  8. LinkedList为什么增删快、查询慢

    List家族中共两个常用的对象ArrayList和LinkedList,具有以下基本特征. ArrayList:长于随机访问元素,中间插入和移除元素比较慢,在插入时,必须创建空间并将它的所有引用向前移 ...

  9. nginx: [error] invalid PID number "" in ...

    1.查看进程 ps -ef|grep nginx 2.进入nginx安装目录sbin下,执行命令: ./nginx -t 如下显示: syntax is ok test is successful 3 ...

  10. 小工具之apk黑屏自动检测

    在打包测试的时候经常发送给测试组之后,发现已进入游戏就黑屏,这个就浪费了测试组的精力,如果要测试多款产品的话,就会因为黑屏问题做很多无用功,这是程序就需要在发给测试的时候自己先测试产品会不会黑屏.同样 ...