当前位置:   article > 正文

git reset版本回退_git reset origin

git reset origin

reset可能出现的问题:使用Git作为代码版本管理工具,可能会遇到自己的错误提代码到线上,回退之后其他人再去pull的时候,代码并不会改变。

原因:虽然自己本地的代码已经回退了,但是别人已经把你的错误代码的版本下载了下来,然后别人重新pull你的新代码下来,然后重新提交的时候,别人会把他本地错误的代码又给重新push到远程仓库了。

解决方法:项目成员都执行:git reset --hard origin/master命令即可。

git reset 有三种模式,--hard模式会把工作区的内容也一起回滚。 --soft和--mixed模式本文不做介绍。

问题重现:

1.本地分表建立两个文件夹用于模拟两个git用户。先在gittest3中的hello.txt文件分别填写4次内容,然后执行git add .  git commit -m “提交信息” 执行完之后,在第四次commit之后执行git push 把本地项目推送到远程仓库。然后执行git log 命令查看本地git的提交历史如下:

2.在另外一个用户2下面执行git pull 把远程代码拉下来。这时候两个用户的代码版本都是一致的

问题情景:现在突然发现用户1下的代码提交错了,代码需要回滚到第二次提交的地方,这里有两种方法,可以用Reset也可以用Revert来回滚,简答的来说用Reset会把第三次和第四次提交的记录直接删掉,如果用Revert他会生成第五次提交,即把第二次提交的记录重新提交一次变成第五次提交,这里主要说Reset

命令如下:git reset --hard 01349564695c5d02d355ccbb14e9cfc5c368f46b

这时候发现用户1的版本已经回退到了第二次提交;但是用户2的版本仍然与远程的版本保持一致都是在版本4。

然后用户1把代码push到远程,发现远程仓库拒绝接收本次push过来的代码,这是因为用户1的版本比远程的版本低。

如果想解决这个问题,就必须使用git push -f 强制推送,推送成功如下图。

这时候用户2pull代码下来。这个时候可能很多人会认为pull下来的代码就是远程回滚后的代码了,其实并不是,pull之后的提示如下。

然后用户2执行git log查看提交历史如下,看到本地git的Head指向版本4,远程已经回退到了版本2。且用户2看到工作空间的文件仍然是版本4的内容。

这时候用户2如果不知道远程已经版本reset回退到了版本2,然后继续开发,修改了hello.txt,然后commit, 然后push

下图是用户2 push之前:

用户2Push之后再查看log,这时候看到用户2的文件执行都是在第五次提交。

这时候用户1再pull代码下来,然后查看log,发现代码版本已经去到了版本5。但是之前已经把版本reset为版本2,希望把版本3和版本4的东西都删除,但是又被用户1重新给推送了过来。

解决方法:

就是每个项目成员都需要执行git reset --hard origin/master ,然本地的git的版本与远程仓库的版本一致。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/554545
推荐阅读
相关标签
  

闽ICP备14008679号