摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢!

“房子是租的 但生活不是”

1.故事的开始

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

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

  1. vim A.txt
  2. git add .
  3. git commit -a -m "add A.txt"
  4. git push
  5. rm A.txt
  6. git commit -a -m "我删除了老板的东西"
  7. git push

————–分割线 ————–

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

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

  1. git push -f

2.解决之道

2.1工作区,暂存区,本地版本库 & 远程版本库

No pic say 个 78。。。

》》工作区:就是我们操作的目录

》》暂存区:操作目录的快照

》》本地版本库:Git的精髓,人人都是中央仓库。也就是Git分布式的好处,自然对比SVN这种集中式

》》远程版本库:Github这种中央仓库,可以达到共享。

常用的操作也如图所示,不言而喻了。

2.2 实战解决

Talk is cheap,Show me the code or money~ 代码如下:

  1. git log
  2. git reset --soft ${commit-id}
  3. git stash
  4. git push -f

详解如下:

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

  1. commit 84686b426c3a8a3d569ae56b6788278c10b27e5b
  2. Author: JeffLi1993 <qiangqiangli1993@gmail.com>
  3. Date:   Fri Apr 8 19:11:32 2016 +0800
  4.    我删除了老板的东西
  5. commit 72bd6304c3c6e1cb7034114db1dd1b8376a6283a
  6. Author: JeffLi1993 <qiangqiangli1993@gmail.com>
  7. Date:   Fri Apr 8 19:05:23 2016 +0800
  8.    add A.txt

我们想要回滚到的版本就是:72bd6304c3c6e1cb7034114db1dd1b8376a6283a

第2行:git reset –soft 72bd6304c3c6e1cb7034114db1dd1b8376a6283a

撤销到某个版本之前,之前的修改退回到暂存区(不懂看漂亮的图哦~)。soft 和 hard参数的区别就是,hard修改记录都没了,soft则会保留修改记录。

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

第4行:git push -f

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

3. 小结

git reset 回滚到某个版本之前
git push -f 强制push覆盖

欢迎点击我的博客及GitHub — 博客提供RSS订阅哦!

———- http://www.bysocket.com/ ————- https://github.com/JeffLi1993 ———-

微         博:BYSocket  豆         瓣:BYSocket  FaceBook:BYSocket  Twitter    :BYSocket

Git回滚远程版本的更多相关文章

  1. git回滚远程仓库

    关于远程仓库回滚 首先,必须要明白的一件事,任何普通用户不能擅自做有关远程仓库回退的操作,如果你擅自回滚了远程仓库,会对项目团队其他人造成不可预知的影响.如果需要回退版本,先联系项目的仓库管理员,在团 ...

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

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

  3. git如何回滚远程仓库

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

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

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

  5. git回滚到任意版本

    git回滚到任意版本 先显示提交的log $ git log -3 commit 4dc08bb8996a6ee02f Author: Mark <xxx@xx.com> Date: We ...

  6. git 回滚到任意版本

    git回滚到任意版本 1.先显示提交的log $ git log -3 commit 4dc08bb8996a6ee02f Author: Mark <xxx@xx.com> Date: ...

  7. git 回滚到某个版本

    首先使用git log 显示最近的代码提交记录 commit后面的内容,就是回滚的记录名 增加了加载条显示,提高用户体验 commit 47f45668e72e4deeccae85e9767c250d ...

  8. git回滚分支版本到指定版本

    昨天提交代码时Eclipse凌乱了,本来拉了dev-20190201分支的,结果提交时竟然跑到dev分支了.为了把dev分支回滚,可以有两种方式:Eclipse和命令行. 先说简单的命令行方式,先用g ...

  9. 【git】远程仓库版本回退方法

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

随机推荐

  1. 学习WPF——初识依赖项属性

    入门 首先创建一个依赖项属性 然后绑定父容器的DataContext到这个依赖项的实例 接着绑定子元素的属性到依赖项属性(注意Button的Content属性) 程序最终的运行结果:   说明 首先是 ...

  2. [C++] socket - 4 [线程同步 简单例子]

    /*WINAPI 线程同步*/ #include<windows.h> #include<stdio.h> DWORD WINAPI myfun1(LPVOID lpParam ...

  3. 不要过早退出循环 while(1){no break}

    我们在尝试新的事物的时候,总是会遇到各种各样的困难,不同的人会在碰壁不同的次数之后退出.用程序员喜欢的话来说就是,我们都在for循环,区别在于你是什么情况下break的.有的人退出阈值高,这是能坚持的 ...

  4. 彻底掌握this,call,apply

    说起js里面比较头疼的知识点,this的指向,call与apply的理解这三者肯定算的上前几,好的js开发者这是必须迈过的槛.今天就总结下这三者紧密相连的关系. 首先推荐理解call的用法 Funct ...

  5. D. Book of Evil

    D. Book of Evil time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...

  6. 要杀死一切APP,微信应用号是不是被神化了?

    昨晚打开微信朋友圈,关于微信“小程序”发布内测邀请函的消息漫天飞舞.今天一早翻阅新闻,各大媒体也纷纷表示看好微信应用号,有些媒体甚至扬言微信应用号将杀死一切APP,大量的APP都将会被用户卸载.不可否 ...

  7. java基础类和对象-题

    1.创建一个三角形类,成员变量三边,方法求周长,创建类主类A来测试它. public class Sanjiaoxing { //定义属性 private int a; private int b; ...

  8. VC中打开对话框选择文件和文件夹

    1.选择文件               CFileDialogdlg(true, NULL, NULL, NULL, "所有文件 | *.*", this);           ...

  9. jquery-drawsvg — HTML5轻量级插件

    在html5中,有许多插件,今天小编就为大家分享众多插件中的jquery-drawsvg插件. jquery-drawsvg是什么插件呢?其实,jquery-drawsvg是一款轻量级的使用jQuer ...

  10. LoadRunner在移动端性能测试的应用

    摘选自 <精通移动app测试实战:技术.工具和案例>新书上市 如果大家之前做过性能测试,我相信一定会应用过大名鼎鼎的性能测试工具-LoadRunner.目前LoadRunner的最新版本为 ...