文档章节

Git回滚远程版本

泥瓦匠BYSocket
 泥瓦匠BYSocket
发布于 2016/04/08 23:29
字数 627
阅读 2567
收藏 144

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

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

1.故事的开始

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

1

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

  1. vim A.txt

  2. git add .

  3. git commit --"add A.txt"

  4. git push

  5. rm A.txt

  6. git commit --"我删除了老板的东西"

  7. git push

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

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

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

  1. git push -f

 

2.解决之道

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

No pic say 个 78。。。

2

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

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

》》本地版本库: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


© 著作权归作者所有

泥瓦匠BYSocket

泥瓦匠BYSocket

粉丝 955
博文 187
码字总数 258797
作品 4
杭州
程序员
私信 提问
加载中

评论(18)

泥瓦匠BYSocket
泥瓦匠BYSocket 博主

引用来自“xqsnow”的评论

赞一个
请多多指教~
xqsnow
xqsnow
赞一个
泥瓦匠BYSocket
泥瓦匠BYSocket 博主

引用来自“jwxa”的评论

那么如果老板本地仓库是最新代码 我却将远程仓库的版本回退了 老板下一次拉代码的时候是否会发生冲突呢?
不会,第一次提交的就是老板的记录~
j
jwxa
那么如果老板本地仓库是最新代码 我却将远程仓库的版本回退了 老板下一次拉代码的时候是否会发生冲突呢?
泥瓦匠BYSocket
泥瓦匠BYSocket 博主

引用来自“苦思冥想”的评论

图是用什么工具画的。
ppt mac
苦思冥想
苦思冥想
图是用什么工具画的。
泥瓦匠BYSocket
泥瓦匠BYSocket 博主

引用来自“falconchen”的评论

引用来自“泡不烂的凉粉”的评论

回滚公共库会被骂死,relog永远挡不住,以后还是小心点上传比较好

对啊,relog还是可以看到啊
@泡不烂的凉粉 git reflog 可以包括显示已经删除的记录信息,这个是赞~ 至于你新clone 远程版本项目,是不存在这信息的。
泥瓦匠BYSocket
泥瓦匠BYSocket 博主

引用来自“brianway”的评论

我擦,看到“本周最受欢迎 TOP”的头像,我感觉在哪见过,原来是java-core-learning的github项目作者。0
幸会~ 可以加群讨论哈
brianway
brianway
我擦,看到“本周最受欢迎 TOP”的头像,我感觉在哪见过,原来是java-core-learning的github项目作者。0
FalconChen
FalconChen

引用来自“泡不烂的凉粉”的评论

回滚公共库会被骂死,relog永远挡不住,以后还是小心点上传比较好

对啊,relog还是可以看到啊
IDEA Git版本回滚提交方式

以此文记录下在IDEA中如何回滚项目历史版本,并提交远程 大致分为两步: 第一步,回滚本地代码; 第二步,回滚远程代码; 首先,我们先来回滚本地代码 按照下图的步骤,获取你要回滚的历史版...

我爱春天的毛毛雨
02/14
434
0
git回滚及常用命令

工作中我们经常需要对代码进行回滚,本地回滚都很简单,但是远程回滚并不是那么容易。网上的大部分资料写的都很复杂,操作不够简单明了。现总结以下我经常用到的git命令。 关于本地回滚 本地...

tiancai啊呆
2018/01/17
0
0
GIT科普系列1:git如何放弃本地working directory的修改,以及回滚

背景: 版本管理对开发人员来说至关重要,之前一直使用svn(主要是TortoiseSVN)作为团队配合的协作工具。但是自己相关的开源项目使用的是git发布在github上。由于项目自身的局限性,很少有大...

zssureqh
2016/06/19
0
0
gitlab的常规操作-远程发布

             gitlab的常规操作 gitlab是我自己搭建,可以参考gitlab搭建 首先需要配置web端的ssh密钥才能操作远程,配置过程如下: 在linux主机上先做密钥认证 # ssh-keygen 认...

技术小疯子
2018/06/01
0
0
手把手教你如何进行 代码版本控制

0.前言 注意:若文章中出现图片无法加载的情况,请移步作者的其他博客。 简书 掘金 最近 S 君进入某互联网公司进行开发,可是进入公司工作的第一件事就是要将自己每天开发的成果递交给老大。...

mr_lp
2017/03/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

发布npm包

1、在NPM网站上注册,并验证(verify)自己的邮箱,一定要验证,不然在发布时会提示你 https://www.npmjs.com 2、在命令行里登录npm, 按提示依次输入用户名 密码 注册邮箱 PS {你本地库的文...

羊皮卷
31分钟前
5
0
数组

数组:可以理解为是一个巨大的“盒子”,里面可以按顺序存放多个类型相同的数据,比如可以定义 int 型的数组 scores 存储 4 名学生的成绩 数组中的元素都可以通过下标来访问,下标从 0 开始。...

Lao鹰
32分钟前
6
0
Spark internal

SparkStream 如何使用checkpoint ? 都 9102 年了,就不要用 RDD 和 DStream API 了吧…… DataFrame/Dataset 和 Structured Streaming 是在RDD 和 DStream 上层. Spark SQL and DataFram......

MtrS
今天
9
0
Kafka实战(五) - 核心API及适用场景全面解析

1 四个核心API ● Producer API 允许一个应用程序发布一串流式的数据到一个或者多个Kafka topic。 ● Consumer API 允许一个应用程序订阅一个或多个topic ,并且对发布给他们的流式数据进行处...

JavaEdge
今天
13
0
实现线程的第三种方式——Callable & Future

Callable Runnable 封装一个异步运行的任务, 可以把它想象成为一个没有参数和返回值的异步方 法。Callable 与 Runnable 类似, 但是有返回值。Callable 接口是一个参数化的类型, 只有一 个...

ytuan996
今天
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部