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

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. flask之Flask、config配置

    flask_config.py ''' flask的配置: 1.flask项目初始化配置: (1)app=Flask(__name__)#初始化声明falsk项目为当前py文件,app应用变量名可以更 ...

  2. nginx配置之负载均衡

    nginx负载均衡 nginx代理机分发到多台同一项目的服务机 负载均衡器代理机配置:nginx.conf的http{}: #代理池,运行在不同服务机的程序 upstream loadtest{ se ...

  3. C# 数据操作系列 - 12 NHibernate的增删改查

    0. 前言 上一篇<C# 数据操作系列 - 11 NHibernate 配置和结构介绍> 介绍了Nhibernate里的配置内容.这一篇将带领大家了解一下如何使用NHIbernate.之前 ...

  4. 王玉兰201771010128实验二 Java基本程序设计

    第一部分:理论知识学习部分:  (1)标识符:标识符由字母.下划线.美元符号和数字组成,且第一个符号不能为数字.Hello.$1234.程序名.www_123都是合法标识符.标识符可用作类名.变量名. ...

  5. Python实现批量处理文件的缩进和转码问题

    最近把很久前的C代码传到Github上的时候,发现全部上百个源文件的代码缩进都变成了8格,而且里面的中文都出现了乱码,所以决定写个程序来批量处理所有文件的格式.这段关于转码的代码可以适用于很多场合,比 ...

  6. 从零开始搭建一个PaaS平台 - 我们要做什么

    前言 从最开始的小公司做小网站,到现在进入现在的公司做项目,发现小公司里很多很多工作都是重复的劳动(增删改查),不过想想也是,业务软件最基础的东西不就是增删改查吗. 但是很多时候,这种业务逻辑其实没有 ...

  7. 花6个月写的付费专栏,免费送|仿开源框架从零到一完整实现高性能、可扩展的RPC框架

    作者 渡码,阿里巴巴码农,公众号:渡码 作者,专注大数据开发.数据分析和Python技术. 关注公众号 渡码 回复关键字 manis,可获取电子书.各章节和完整源代码,并且可加入读者群一起交流问题. ...

  8. solr学习(笔记) windows10+jdk1.8+tomcat8环境部署

    一:准备环境 1.1 »tomcat8.5下载地址:https://tomcat.apache.org/download-80.cgi 1.2 solr各版本下载地址:http://archive.a ...

  9. 题解 P6509 【[CRCI2007-2008] JEDNAKOST】

    洛谷题目传送门!! 洛谷博客!! 这道题感觉是一个很另类的DP  至少我的做法是这样的. 重要前置思想:把A存成字符串!!! (应该也没人会想着存成int和long long 吧) 首先,我们定义状态 ...

  10. leetcode198之打家劫舍问题

    问题描述: 你是一个专业的小偷,计划偷窃沿街的房屋.每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警. 给 ...