git如何回滚远程仓库版本

1.关于远程仓库回滚

首先,必须要明白的一件事,任何普通用户不能擅自做有关远程仓库回退的操作,如果你擅自回滚了远程仓库,会对项目团队其他人造成不可预知的影响。如果需要回退版本,先联系项目的仓库管理员,在团队其他人都对自己本地未提交的工作做好备份之后,再进行远程仓库回退操作,操作结束后,团队成员需要重新同步远程仓库后继续自己的工作。

2.删除最后一次提交

这种情况是最简单的了,只需要以下两步就可以了

注意,revert和reset的区别:

revert是放弃指定提交的修改,但是会生成一次新的提交,需要填写提交注释,以前的历史记录都在,而reset是指将HEAD指针指到指定提交,历史记录中不会出现放弃的提交记录。如果还没有理解的话,我们做如下测试:

现在我们使用revert放弃最后一次提交,之后执行git log:

历史记录中还有第三次提交的记录,并且多了一次的提交,但是仓库内容已经回到了第二次提交之后的状态。 现在我们使用reset回到第三次提交,之后执行git log:

历史记录中已经没有之前revert生成的提交记录了,现在应该明白了吧。 如果删除远程仓库的最后一次提交的时候不需要保留历史记录的话,可以使用reset,命令如下:

-f 参数是强制提交,因为reset之后本地库落后于远程库一个版本,因此需要强制提交。

3.删除历史某次提交

来自泥瓦匠BYSocket的博客

3.1 故事的开始

远程master分支下代码被不小心提交了很多垃圾代码或项目删掉,想要回滚到以前的某一版本并删除commit log。怎么办?情景如图:

情景很简单。老板上传了个文件,我把他删掉了。有一种办法,把文件再push下,但是也不想他看到图中那comment(ps:这样我才不会被fire)。实现上面场景的代码如下:

一头雾水的小白怎么办?怎么办?怎么办?

push到远程的提交默认是不能修改的,但是一定要修改不是不行:

git push -f

3.2 解决之道

代码如下:

详解如下:

第1行:git log 查看提交历史,然后找到要回滚的版本。历史如下,

第2行:git reset –soft 72bd6304c3c6e1cb7034114db1dd1b8376a6283a

撤销到某个版本之前,之前的修改退回到暂存区。soft 和 hard参数的区别就是,hard修改记录都没了,soft则会保留修改记录。

第3行:暂存为了安全起见。

第4行:git push -f

将本地master push 到远程版本库中, -f 强制覆盖。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180721G0F41G00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券