关于远程仓库回滚

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

通常回滚远程仓库会有以下三种情形:

1、删除最后一次提交

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

    git revert HEAD
git push origin master

注意,revertreset的区别:

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

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

    git revert HEAD
git log

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

    git reset --hard HEAD^
git log

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

    git reset --hard HEAD^
git push origin master -f

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

2、删除历史某次提交

这种情况需要先用git log命令在历史记录中查找到想要删除的某次提交的commit id,比如下图中圈出来的就是注释为"2"的提交的commit id(由此可见提交的注释很重要,一定要认真写)

然后执行以下命令("commit id"替换为想要删除的提交的"commit id",需要注意最后的^号,意思是commit id的前一次提交):

    git rebase -i "commit id"^

执行该条命令之后会打开一个编辑框,内容如下,列出了包含该次提交在内之后的所有提交。

然后在编辑框中删除你想要删除的提交所在行,然后保存退出就好啦,如果有冲突的需要解决冲突。接下来,执行以下命令,将本地仓库提交到远程库就完成了:

    git push origin master -f

3、修改历史某次提交

这种情况的解决方法类似于第二种情况,只需要在第二条打开编辑框之后,将你想要修改的提交所在行的pick替换成edit然后保存退出,这个时候rebase会停在你要修改的提交,然后做你需要的修改,修改完毕之后,执行以下命令:

    git add .
git commit --amend
git rebase --continue

如果你在之前的编辑框修改了n行,也就是说要对n次提交做修改,则需要重复执行以上步骤n次。

需要注意的是,在执行rebase命令对指定提交修改或删除之后,该次提交之后的所有提交的"commit id"都会改变。


git回滚远程仓库的更多相关文章

  1. git回滚远程仓库代码/错提master分支的恢复

    前言 今天周五了,刚接了个新微服务模块,下班前高高兴兴开发完,提交git代码,jenkins发布到测试环境.突然看到一个提示 我最近提的代码呢?!! 想到可能会提错仓库,转念一想,不对呀,我怎有这么高 ...

  2. git如何回滚远程仓库

    git如何回滚远程仓库 http://www.cnblogs.com/iloveyou-sky/p/6534409.html

  3. Git回滚远程版本

    摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “房子是租的 但生活不是” 1.故事的开始 远程master分支下代码被不小心提交了很多垃圾代码 ...

  4. 学习廖雪峰的Git教程2--远程仓库

    今天跳过之前版本管理,先来学习远程仓库内容: 1.创建ssh(这是为没有ssh key准备的,如果有就可以进行下一步: 敲入 $ ssh-keygen -t rsa -C "youremai ...

  5. git回滚到某个版本操作

    git回滚到某个版本操作: 1.git log //查看指过去的版本 2.     git reset --hard 复制上面commit后的字符串到此处 如果只想 回滚单机的,那么到上面就结束,如果 ...

  6. git---远程仓库版本回滚

    开发中,发现有错误版本提交带远程分支master,怎么处理? 1 简介 最近在使用git时遇到了远程分支需要版本回滚的情况,于是做了一下研究,写下这篇博客. 2 问题 如果提交了一个错误的版本,怎么回 ...

  7. Git--远程仓库版本回退方法

    Git--远程仓库版本回退方法 1 简介 最近在使用git时遇到了远程分支需要版本回滚的情况,于是做了一下研究,写下这篇博客. 2 问题 如果提交了一个错误的版本,怎么回退版本? 如果提交了一个错误的 ...

  8. Git(进击学习:远程仓库操作)-V3.0

    1.查看当前的远程仓库:git remote或git remote -v 2.添加远程仓库:git remote add [shortname] [url] git remote add pb git ...

  9. git回滚

    Git回滚的常用手法 07net01.com 发布于 4小时前 评论 传统VCS的回滚操作 对于版本控制系统VCS来说,回滚这个操作应该是个很普通也是很重要的需求. 如果你是传统VCS,比如SVN或者 ...

随机推荐

  1. mysql 分组排序前n + 长表转宽表

    MySQL数据库优化的八种方式(经典必看) 建表 CREATE TABLE if not EXISTS `bb` ( `id` int not null primary key auto_increm ...

  2. oracle12c安装+配置,plsql 13安装+激活

    oracle12c安装下载地址 oracle12c安装安装教程 Oracle 11g R2 Client(64bit)的下载与安装(图文详解) PLSQL Developer 11安装与配置 list ...

  3. springboot解决跨域问题

    在启动类里加入corsFilter import org.springframework.boot.SpringApplication; import org.springframework.boot ...

  4. LOJ 3057 「HNOI2019」校园旅行——BFS+图等价转化

    题目:https://loj.ac/problem/3057 想令 b[ i ][ j ] 表示两点是否可行,从可行的点对扩展.但不知道顺序,所以写了卡时间做数次 m2 迭代的算法,就是每次遍历所有不 ...

  5. PostgreSQL 自定义自动类型转换(CAST)

    转载自:https://yq.aliyun.com/articles/228271 背景 PostgreSQL是一个强类型数据库,因此你输入的变量.常量是什么类型,是强绑定的,例如 在调用操作符时,需 ...

  6. NFC应用于公交卡

    NFC应用于公交卡https://www.cnblogs.com/liuzhaoyzz/p/7115098.html 带有NFC功能的安卓手机可以给实体公交卡充值,手机虚拟公交卡现在有两种方案,一种是 ...

  7. bui框架nav导航图标一览

    权限  .nav-permission   仓库  .nav-storage   库存  .nav-inventory   用户  .nav-user   订单  .nav-order   商品  . ...

  8. Pod配置PersistentVolumeClaim详解

    1,创建PersistentVolume kind: PersistentVolume apiVersion: v1 metadata: name: task-pv-volume labels: ty ...

  9. C/C++中的volatile简单描述

    首先引入一篇博客: 1. 为什么用volatile? C/C++ 中的 volatile 关键字和 const 对应,用来修饰变量,通常用于建立语言级别的 memory barrier.这是 BS 在 ...

  10. base64图片内容下载转为图片保存

    网页中的base64图片内容下载后,利用PIL转为图片保存 from skimage.io import imread from PIL import Image from cStringIO imp ...