[物語を忘れました]°のブログへようこそ

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的为正确的修改,并且你上一步的提交影响到他了,要回滚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.再次push

图片

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

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

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

1.说明

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

2.步骤

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

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

图片

则效果是:

图片

可以看到一开始的

对应远程的文件

图片

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

图片

posted @ 2020-06-11 20:52  故事我忘了°  阅读(6628)  评论(0编辑  收藏  举报